LocationRequest的位置设置

时间:2018-10-07 10:01:01

标签: android google-play-services

在我的应用中,我想通过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 :(得分:0)

通过在AndroidManifest.xml中添加权限,一个应用程序会告诉Android系统我将需要在该应用程序中获得此权限才能按预期运行。

此后,如果您需要的许可权列为dangerous,则系统将向用户请求许可权,否则系统将在运行时向您授予该许可权(这意味着您需要请求许可权和系统将根据需要采取措施)。

此权限规则适用于API级别23+。

如果用户授予您该权限,那么您将能够访问该用户的信息。

在定位的情况下,您需要进行额外的检查(问题的第二点),因为只有在启用位置设置后,系统才能检查位置。也就是说,WiFi符号,移动数据符号列表中的位置符号。

编辑: 如果您省略了检查位置设置的代码段,那么如果用户的位置像this image一样处于关闭状态,则您将无法获得位置。

没有"android.permission.LOCATION_SETTINGS_ENABLED"这样的许可。