Код: Выделить всё
@Composable
fun GpsLocationHelper(hasLocationAccess: (Boolean)->Unit){
val context = LocalContext.current
val permissions = arrayOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
)
var hasLocationPermission by remember {
mutableStateOf(
permissions.all{
ContextCompat.checkSelfPermission(
context,
it
) == PackageManager.PERMISSION_GRANTED}
)
}
val launcher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.RequestMultiplePermissions(),
onResult = { permissionsMap ->
hasLocationPermission = permissionsMap.values.reduce { acc, next ->
acc && next
}
val locationEnabled = isLocationEnabled(context) //
hasLocationAccess(hasLocationPermission && locationEnabled)
}
)
LaunchedEffect(key1 = true) {
launcher.launch(
permissions
)
}
}
fun isLocationEnabled(context: Context): Boolean {
val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
return LocationManagerCompat.isLocationEnabled(locationManager)
}
На экранах, где мне нужны координаты GPS, я называю это так: это:
Код: Выделить всё
GpsLocationHelper(hasLocationAccess = {
if (it) {
getCurrentLocation(context){lat, lng ->
....
}
}
})
я не получаю ни всплывающих окон с запросом разрешения на определение местоположения, ни появляется ли опция «Местоположение» в настройках приложения для разрешений (см. изображение ниже), поэтому
Код: Выделить всё
permissionsMap

В моем манифесте у меня настроено следующее:
Код: Выделить всё
android:name="androidx.core.content.FileProvider"
android:authorities="myApp.provider"
android:exported="false"
android:grantUriPermissions="true">
Спасибо за помощь заранее!
Подробнее здесь: https://stackoverflow.com/questions/786 ... and-missin