Android 14, Jetpack Compose — ни один щенок не запрашивает разрешение на определение местоположения и отсутствует в настAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android 14, Jetpack Compose — ни один щенок не запрашивает разрешение на определение местоположения и отсутствует в наст

Сообщение Anonymous »

В моем приложении Jetpack Compose у меня есть Composable-помощник, который запрашивает разрешения на определение местоположения:

Код: Выделить всё

@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 ->
....
}
}
})
Он отлично работает для старых версий Android, которые я тестировал (9,11,12), но на Android 14
я не получаю ни всплывающих окон с запросом разрешения на определение местоположения, ни появляется ли опция «Местоположение» в настройках приложения для разрешений (см. изображение ниже), поэтому

Код: Выделить всё

permissionsMap
всегда содержит значения false.
Изображение

В моем манифесте у меня настроено следующее:

Код: Выделить всё

    

































android:name="androidx.core.content.FileProvider"
android:authorities="myApp.provider"
android:exported="false"
android:grantUriPermissions="true">







Я читал об изменениях в Android 14, касающихся разрешений на местоположение, но пока не нашел работающего решения.
Спасибо за помощь заранее!

Подробнее здесь: https://stackoverflow.com/questions/786 ... and-missin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»