Аварийное завершение приложения может происходить по разным причинам. Некоторые из них могут быть связаны с ошибками в коде приложения, недостаточными разрешениями или неправильной конфигурацией устройства.
В данном случае, ошибка "failed to get last known location: java.lang.SecurityException: uid 10190 does not have android.permission.ACCESS_COARSE_LOCATION or android.permission.ACCESS_FINE_LOCATION" указывает на то, что приложение не имеет необходимых разрешений для доступа к местоположению устройства.
Чтобы решить эту ошибку, убедитесь, что ваше приложение имеет следующие разрешения в файле манифеста:
```xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
```
Однако просто предоставление разрешений может не быть достаточным. Начиная с Android 6.0 (API уровень 23), разрешения на доступ к местоположению должны запрашиваться во время выполнения. Вы можете добавить код для запроса разрешений в вашем коде активности или фрагмента. Ниже пример запроса разрешений на доступ к местоположению:
```java
private static final int MY_PERMISSIONS_REQUEST_LOCATION = 100;
private void checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Запрашиваем разрешение, если оно не было предоставлено ранее
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
} else {
// Разрешение уже предоставлено
// Здесь может содержаться код, связанный с местоположением
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION: {
if (grantResults.length > 0 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Разрешение было предоставлено
// Здесь может содержаться код, связанный с местоположением
} else {
// Разрешение не было предоставлено
}
return;
}
}
}
```
Это пример простого кода для запроса разрешений на доступ к местоположению. Вам может потребоваться включить дополнительную логику в зависимости от потребностей вашего приложения.
Также, убедитесь, что на устройстве включен доступ к местоположению. Вы можете проверить это, перейдя в "Настройки" > "Безопасность" > "Местоположение" и убедившись, что доступ к местоположению разрешен в вашем приложении.
Если после предоставления разрешений и проверки настройки доступа к местоположению ошибка все еще возникает, необходимо проверить весь код приложения и убедиться, что нет других ошибок, которые могут приводить к его аварийному завершению.