Настройки местоположения для LocationRequest - PullRequest
0 голосов
/ 07 октября 2018

В моем приложении я хочу узнать местоположение устройства через GPS.Хорошо, я объявляю <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> в манифесте, и когда приложение запускается, пользователя просят разрешить GPS.

Когда я читаю Android dok , есть две опции:

  1. Все настройки местоположения выполнены:

    task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
      @Override
      public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
        // All location settings are satisfied. The client can initialize
        // location requests here.
        // ...
      }
    });
    
  2. Настройки местоположения не выполнены:

    task.addOnFailureListener(this, new OnFailureListener() {
      @Override
      public void onFailure(@NonNull Exception e) {
         if (e instanceof ResolvableApiException) {
            // Location settings are not satisfied, but this can be fixed
            // by showing the user a dialog.
            try {
              // Show the dialog by calling startResolutionForResult(),
              // and check the result in onActivityResult().
              ResolvableApiException resolvable = (ResolvableApiException) e;
              resolvable.startResolutionForResult(MainActivity.this,
                    REQUEST_CHECK_SETTINGS);
            } catch (IntentSender.SendIntentException sendEx) {
              // Ignore the error.
            }
         }
      }
    });
    

Кажется, что есть два вида ресурсов: один, который я должен объявить в манифесте, и другой вид, который я должен запросить во время выполнения.

  1. Правильно ли я понял?
  2. Почему это различие?

1 Ответ

0 голосов
/ 07 октября 2018

Добавляя разрешение в AndroidManifest.xml, приложение сообщает системе Android, что мне потребуется это разрешение в приложении, чтобы оно работало по назначению.

После этого, если требуемое разрешение будет указано как опасное , тогда система запросит разрешение у пользователя, иначе система предоставит вам это разрешение во время выполнения (что означает, что вам нужно запросить разрешение, и система примет необходимые меры).

Эти правила разрешений применяются для уровня API 23+.

Если пользователь предоставит вам разрешение, вы сможете получить доступ к этой информации пользователя.

В случае местоположения вам необходимо выполнить дополнительную проверку (ваш второй пункт вопроса) потому что местоположения могут проверяться только системой, когда включена настройка местоположения.То есть символ местоположения, который появляется в списке символов WiFi, символа мобильных данных.

РЕДАКТИРОВАТЬ: Если вы опустите фрагмент кода проверки настроек местоположения, то если местоположение пользователя отключенокак это изображение , тогда вы не получите местоположение.

И нет такого разрешения, как "android.permission.LOCATION_SETTINGS_ENABLED".

...