Никогда больше не спрашивайте о включении GPS - PullRequest
0 голосов
/ 01 марта 2020

У меня есть функция в Kotlin, которая включает GPS в приложении. Можно ли изменить диалоговое окно, добавив флажок с параметром типа «Никогда больше не спрашивать», чтобы не включать GPS все время, когда пользователь открывает приложение?

Или, может быть, есть какое-то другое решение как сделать пользовательское диалоговое окно?

Вот код:

private fun buildAlertMessageNoGps() {
    val mLocationRequest = LocationRequest.create()
        .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
        .setInterval(2000)
        .setFastestInterval(1000)
    val settingsBuilder = LocationSettingsRequest.Builder()
        .addLocationRequest(mLocationRequest)
        .setAlwaysShow(true)
    settingsBuilder.setAlwaysShow(true)
    val result = LocationServices.getSettingsClient(this).checkLocationSettings(settingsBuilder.build())
    result.addOnCompleteListener { task ->
        try {
            task.getResult(ApiException::class.java)
        } catch (ex: ApiException) {
            when (ex.statusCode) {
                LocationSettingsStatusCodes.RESOLUTION_REQUIRED -> try {
                    val resolvableApiException = ex as ResolvableApiException
                    resolvableApiException.startResolutionForResult(this, 100)
                } catch (e: IntentSender.SendIntentException) {
                    Toast.makeText(this,"PendingIntent unable to execute request.",Toast.LENGTH_SHORT).show()
                }
                LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE -> {
                    Toast.makeText(
                        this,
                        "Something is wrong in your GPS",
                        Toast.LENGTH_SHORT
                    ).show()
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 01 марта 2020

Согласно Android Разработчикам :

Если устройство работает Android 6.0 или выше, а целевой SDK вашего приложения - 23 или выше, приложение должно перечислить разрешения в манифесте и запросите эти разрешения во время выполнения. Дополнительные сведения см. В разделе «Запрос разрешений во время выполнения».

Если ваше приложение настроено на Android 10 (уровень API 29) или выше и ему требуется доступ к расположению устройства, когда приложение находится в фоновом режиме, необходимо также объявите разрешение ACCESS_BACKGROUND_LOCATION. Подробнее см. В разделе о том, как запросить доступ к фоновому местоположению.

...