在我的应用中,我想通过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.
}
}
}
});
似乎有两种资源,一种是我必须在清单中声明,另一种是我必须在运行时请求。
答案 0 :(得分:0)
通过在AndroidManifest.xml
中添加权限,一个应用程序会告诉Android系统我将需要在该应用程序中获得此权限才能按预期运行。
此后,如果您需要的许可权列为dangerous,则系统将向用户请求许可权,否则系统将在运行时向您授予该许可权(这意味着您需要请求许可权和系统将根据需要采取措施)。
此权限规则适用于API级别23+。
如果用户授予您该权限,那么您将能够访问该用户的信息。
在定位的情况下,您需要进行额外的检查(问题的第二点),因为只有在启用位置设置后,系统才能检查位置。也就是说,WiFi符号,移动数据符号列表中的位置符号。
编辑: 如果您省略了检查位置设置的代码段,那么如果用户的位置像this image一样处于关闭状态,则您将无法获得位置。
没有"android.permission.LOCATION_SETTINGS_ENABLED"
这样的许可。