Я работаю над приложением Jetpack Compose, и мне нужно обработать разрешение настроек местоположения. Я хочу проверить, включены ли настройки местоположения устройства (например, GPS и высокая точность), и если нет, показать диалоговое окно разрешения, чтобы пользователь мог их включить.
Я не хочу не знаю как запустить через лаучер.
locationSettingsLauncher.launch(resolvable.resolution) //(need to get result in launcher)
//resolvable.startResolutionForResult(activity, LOCATION_SETTINGS_REQUEST) (it will work but i am not ready to get result in parent activity of compose screen)
val LOCATION_SETTINGS_REQUEST = 245
fun enableLoc(context: Context, locationSettingsLauncher: ActivityResultLauncher) {
val activity = context.findActivity()
// Create a LocationRequest object
val locationRequest = LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 30 * 1000L)
.setWaitForAccurateLocation(false)
.setMinUpdateIntervalMillis(5 * 1000L)
.setMaxUpdateDelayMillis(100)
.build()
// Build LocationSettingsRequest
val builder = LocationSettingsRequest.Builder().apply {
addLocationRequest(locationRequest)
setAlwaysShow(true) // Always show the prompt if location is not enabled
}
// Check the location settings
LocationServices
.getSettingsClient(activity)
.checkLocationSettings(builder.build())
.addOnCompleteListener { task ->
if (task.isSuccessful) {
requestLocationUpdates()
} else {
// The task failed, handle the exception
try {
val exception = task.exception
if (exception is ResolvableApiException) {
// The exception is of type ResolvableApiException, so you need to resolve it
val resolvable = exception as ResolvableApiException
// Start resolution for result
locationSettingsLauncher.launch(resolvable.resolution)
//resolvable.startResolutionForResult(activity, LOCATION_SETTINGS_REQUEST)
} else {
// Handle other types of exceptions (e.g., network issues, internal errors)
Toast.makeText(activity, "Location settings could not be resolved.", Toast.LENGTH_LONG).show()
}
} catch (e: ClassCastException) {
// Catch any potential casting issues (though unlikely)
e.printStackTrace()
}
}
}
}
// Register for location settings resolution result
val locationSettingsLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult()
) { result ->
// Handle result after location settings resolution
if (result.resultCode == Activity.RESULT_OK) {
locationViewModel.requestLocationUpdates()
// Location settings are now enabled, proceed with location updates
Toast.makeText(context, "Location settings enabled. Proceeding with location updates.", Toast.LENGTH_LONG).show()
// Continue with your location request logic
} else {
locationViewModel.removeLocationUpdates()
// User canceled or didn't enable location settings
Toast.makeText(context, "Location settings are required.", Toast.LENGTH_LONG).show()
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... composable
Как запустить разрешение местоположения через панель запуска и получить результат в виде составного экрана, а не активно ⇐ Android
Форум для тех, кто программирует под Android
1730894613
Anonymous
Я работаю над приложением Jetpack Compose, и мне нужно обработать разрешение настроек местоположения. Я хочу проверить, включены ли настройки местоположения устройства (например, GPS и высокая точность), и если нет, показать диалоговое окно разрешения, чтобы пользователь мог их включить.
Я не хочу не знаю как запустить через лаучер.
locationSettingsLauncher.launch(resolvable.resolution) //(need to get result in launcher)
//resolvable.startResolutionForResult(activity, LOCATION_SETTINGS_REQUEST) (it will work but i am not ready to get result in parent activity of compose screen)
val LOCATION_SETTINGS_REQUEST = 245
fun enableLoc(context: Context, locationSettingsLauncher: ActivityResultLauncher) {
val activity = context.findActivity()
// Create a LocationRequest object
val locationRequest = LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 30 * 1000L)
.setWaitForAccurateLocation(false)
.setMinUpdateIntervalMillis(5 * 1000L)
.setMaxUpdateDelayMillis(100)
.build()
// Build LocationSettingsRequest
val builder = LocationSettingsRequest.Builder().apply {
addLocationRequest(locationRequest)
setAlwaysShow(true) // Always show the prompt if location is not enabled
}
// Check the location settings
LocationServices
.getSettingsClient(activity)
.checkLocationSettings(builder.build())
.addOnCompleteListener { task ->
if (task.isSuccessful) {
requestLocationUpdates()
} else {
// The task failed, handle the exception
try {
val exception = task.exception
if (exception is ResolvableApiException) {
// The exception is of type ResolvableApiException, so you need to resolve it
val resolvable = exception as ResolvableApiException
// Start resolution for result
locationSettingsLauncher.launch(resolvable.resolution)
//resolvable.startResolutionForResult(activity, LOCATION_SETTINGS_REQUEST)
} else {
// Handle other types of exceptions (e.g., network issues, internal errors)
Toast.makeText(activity, "Location settings could not be resolved.", Toast.LENGTH_LONG).show()
}
} catch (e: ClassCastException) {
// Catch any potential casting issues (though unlikely)
e.printStackTrace()
}
}
}
}
// Register for location settings resolution result
val locationSettingsLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult()
) { result ->
// Handle result after location settings resolution
if (result.resultCode == Activity.RESULT_OK) {
locationViewModel.requestLocationUpdates()
// Location settings are now enabled, proceed with location updates
Toast.makeText(context, "Location settings enabled. Proceeding with location updates.", Toast.LENGTH_LONG).show()
// Continue with your location request logic
} else {
locationViewModel.removeLocationUpdates()
// User canceled or didn't enable location settings
Toast.makeText(context, "Location settings are required.", Toast.LENGTH_LONG).show()
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79159709/how-to-launch-location-resolution-through-launcher-and-get-result-in-composable[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия