У меня есть приложение Bluetooth в Android 10, и прежде чем я смогу начать поиск устройств, мне нужно запросить разрешения для определения местоположения. Когда я устанавливаю приложение в первый раз, я получаю всплывающее окно с указанием местоположения, но после этого, если я отключу их, оно не будет спрашивать снова, и мне нужно попросить пользователя включить их каждый раз, когда они выключены.
Вот мой код:
override fun onStart() {
super.onStart()
requestPermissions(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), PERMISSION_REQUEST_CODE)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == PERMISSION_REQUEST_CODE && permissions.contains(Manifest.permission.ACCESS_FINE_LOCATION)) {
if (grantResults.contains(PackageManager.PERMISSION_GRANTED)) {
if (!BluetoothAdapter.getDefaultAdapter().isEnabled) {
startActivityForResult(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), ENABLE_BLT_REQUEST_CODE)
} else {
viewModel.discoverBLTDevices()
}
} else {
showToast("Location permission needed to scan for devices.")
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == ENABLE_BLT_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
viewModel.discoverBLTDevices()
} else if (resultCode == Activity.RESULT_CANCELED) {
finish()
}
}
}