LocationRequest 的位置设置
Location settings for LocationRequest
在我的应用程序中,我想通过 GPS 获取设备的位置。好的,我声明
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
在清单中,当应用程序启动时,系统会要求用户允许 GPS。
当我阅读Android dok时,有两种选择:
所有位置设置都满足:
task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
// All location settings are satisfied. The client can initialize
// location requests here.
// ...
}
});
位置设置不满意:
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.
}
}
}
});
看来,有两种资源,一种,我必须在清单中声明,另一种,我必须在运行时请求。
- 我做对了吗?
- 为什么要这样区分?
通过在 AndroidManifest.xml
中添加权限,应用会告诉 Android 系统我需要在应用中获得此权限才能按预期运行。
此后,如果您需要的权限列为dangerous,那么系统会向用户请求权限,否则系统会在运行时授予您该权限(这意味着您需要请求权限系统将根据需要采取行动)。
此权限规则适用于 API 级别 23+。
如果用户授予您权限,那么您将能够访问用户的该信息。
在位置的情况下,您需要进行额外的检查(问题的第二点),因为位置只能在启用位置设置时由系统检查。即,WiFi 符号、移动数据符号列表中的位置符号。
编辑:
如果省略检查位置设置的代码片段,那么如果用户的位置关闭,如this image,那么你将无法获取位置。
并且没有"android.permission.LOCATION_SETTINGS_ENABLED"
这样的权限。
在我的应用程序中,我想通过 GPS 获取设备的位置。好的,我声明
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
在清单中,当应用程序启动时,系统会要求用户允许 GPS。
当我阅读Android dok时,有两种选择:
所有位置设置都满足:
task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // All location settings are satisfied. The client can initialize // location requests here. // ... } });
位置设置不满意:
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. } } } });
看来,有两种资源,一种,我必须在清单中声明,另一种,我必须在运行时请求。
- 我做对了吗?
- 为什么要这样区分?
通过在 AndroidManifest.xml
中添加权限,应用会告诉 Android 系统我需要在应用中获得此权限才能按预期运行。
此后,如果您需要的权限列为dangerous,那么系统会向用户请求权限,否则系统会在运行时授予您该权限(这意味着您需要请求权限系统将根据需要采取行动)。
此权限规则适用于 API 级别 23+。
如果用户授予您权限,那么您将能够访问用户的该信息。
在位置的情况下,您需要进行额外的检查(问题的第二点),因为位置只能在启用位置设置时由系统检查。即,WiFi 符号、移动数据符号列表中的位置符号。
编辑: 如果省略检查位置设置的代码片段,那么如果用户的位置关闭,如this image,那么你将无法获取位置。
并且没有"android.permission.LOCATION_SETTINGS_ENABLED"
这样的权限。