Как программно проверить Android "Согласие на местоположение"?

Я хотел бы программным образом определить, согласился ли пользователь или не согласился с диалоговым окном "Согласие на местоположение", которое появляется при включении вашего GPS на устройствах Android.

Я не смог найти, откуда получить эту информацию, и я не уверен, действительно ли он доступен в любом месте кода?

Благодарю!

2 ответа

Речь идет о режиме местоположения. если пользователь согласился с "Соглашением о местоположении", режим определения местоположения установлен на Высокую Точность.

Для проверки этого режима вы можете использовать следующий код:

public static boolean checkLocationSettings(Context context) {

 int locationMode = 0;
 String locationProviders;

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
 try {
 locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);

 } catch (SettingNotFoundException e) {
 e.printStackTrace();
 }

 return (locationMode != Settings.Secure.LOCATION_MODE_OFF && locationMode == Settings.Secure.LOCATION_MODE_HIGH_ACCURACY); //check location mode

 }else{
 locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
 return !TextUtils.isEmpty(locationProviders);
 }


}


Проверьте новый gms.location.SettingsApi. Вы создаете LocationRequest и спрашиваете, совместимы ли текущие системные настройки, и обрабатывайте результат по мере необходимости.

https://developer.android.com/reference/com/google/android/gms/location/SettingsApi.html

licensed under cc by-sa 3.0 with attribution.