Я разрабатывал приложение и тестировал его на Android 9, и все было хорошо. Неделю назад я обновил свой телефон до Android 10 и заметил, что разрабатываемое мной приложение начинает работать неправильно. Я проверил еще раз на Android 9, и это нормально, но новый Android 10 не работает должным образом.
Проблема, связанная с местоположением:
- Я спрашиваю разрешение на местоположение (с помощью Декстера)
Dexter.withActivity(this).withPermission(Manifest.permission.ACCESS_FINE_LOCATION).withListener(object : PermissionListener {
@SuppressLint("MissingPermission")
override fun onPermissionGranted(response: PermissionGrantedResponse?) {
Timber.d("onPermissionGranted [%s]", response?.permissionName)
turnOnLocation(OnSuccessListener {
requestLocation()
})
}
override fun onPermissionRationaleShouldBeShown(permission: PermissionRequest?, token: PermissionToken?) {
Timber.d("onPermissionRationaleShouldBeShown")
token?.continuePermissionRequest()
}
override fun onPermissionDenied(response: PermissionDeniedResponse?) {
Timber.d("onPermissionDenied [%s]", response?.permissionName)
}
}).check()
Когда разрешение было предоставлено, я попытался включить местоположение
private fun turnOnLocation(onSuccessListener: OnSuccessListener<LocationSettingsResponse>? = null) {
val builder = LocationSettingsRequest.Builder().addLocationRequest(locationRequest).setAlwaysShow(true)
val locationSettings = settingsClient.checkLocationSettings(builder.build())
onSuccessListener?.let { locationSettings.addOnSuccessListener(it) }
locationSettings.addOnFailureListener {
if (it is ResolvableApiException) it.startResolutionForResult(this@MainActivity, requestCheckSettings)
}
}
Тогда я жду результата активности здесь:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == requestCheckSettings) {
if (resultCode == RESULT_OK) {
Timber.i("GPS enabled")
requestLocation()
} else {
Timber.e("GPS is not enabled")
}
}
}
Наконец:
Цитата
В ANDROID 10: после нажатияна «ОК» в диалоговом окне «Включить местоположение» - приложение перейдет ко мне к неожиданному поведению Timber.e("GPS is not enabled")
Цитата
В ANDROID 9: После нажатия на «ОК»в диалоговом окне «Включить местоположение» - приложение переходит ко мне к ожидаемому поведению Timber.i("GPS enabled")
У кого-нибудь есть мысли по этому поводу?