Я создаю приложение для Android, которое добавляет карту к деятельности, пользователь может центрировать карту по своему текущему местоположению, используя «слой местоположения». добавить кнопку местоположения на карте с помощью:
mMap.isMyLocationEnabled = true
Я проверяю разрешение ACCESS_FINE_LOCATION
внутри onMapReady
метода, и все работает нормально, но мне нужно закончить activiy и снова открыть его, чтобы увидеть изменения (кнопка местоположения).
Итак, я использую onRequestPermissionsResult
для проверки ответа пользователя, но когда я звоню mMap.isMyLocationEnabled = true
Android Studio говорит:
Для вызова требуется разрешение, которое может быть отклонено пользователем: code shoud
явно проверьте, если разрешение доступно (с
checkPermission) или явно обработать потенциальное исключение SecurityException ...
Это мой код:
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.uiSettings.isCompassEnabled = true
if(ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),SOLICITA_UBICACION_CLAVE)
}else{
mMap.isMyLocationEnabled = true
}
mMap.uiSettings.isMyLocationButtonEnabled = true
mMap.uiSettings.isZoomControlsEnabled = true
// Add a marker in Sydney and move the camera
val sydney = LatLng(-34.0, 151.0)
mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
android.R.id.home -> {
onBackPressed()
return true
}
}
return super.onOptionsItemSelected(item)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when(requestCode){
SOLICITA_UBICACION_CLAVE -> {
if((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)){
mMap.isMyLocationEnabled = true
Toast.makeText(this@MapsActivity,"Permiso garantizado",Toast.LENGTH_SHORT).show()
}else{
mMap.isMyLocationEnabled = false
Toast.makeText(this@MapsActivity,"Permiso denegado",Toast.LENGTH_SHORT).show()
}
}
}
}
Итак, как мне позвонить mMap.isMyLocationEnabled = true
внутри onRequestPermissionsResult
?,
Какова цель проверки разрешения внутри when
инструкции для кода запроса, если предполагается, что он в данный момент предоставлен?