在 Android 11 中,位置访问的权限被限制了,应用需要进行一些额外的步骤才能够获取位置信息。下面是一个包含代码示例的解决方法:
private static final int REQUEST_LOCATION_PERMISSION = 1;
// 检查权限
private boolean checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
}
// 请求权限
private void requestLocationPermission() {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_LOCATION_PERMISSION);
}
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_LOCATION_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限被授予,可以开始获取位置信息
// 在这里执行获取位置信息的操作
} else {
// 权限被拒绝,无法获取位置信息
// 在这里处理权限被拒绝的情况
}
}
}
checkLocationPermission()
方法检查权限,如果权限已经被授予,则直接执行获取位置信息的操作;如果权限未被授予,则调用 requestLocationPermission()
方法请求权限。注意:在 Android 11 中,还需要在 AndroidManifest.xml 文件中添加以下代码来声明使用后台位置访问权限:
以上就是在 Android 11 中获取位置访问权限的解决方法,希望对你有帮助!