在Android 10中,位置权限被归为了危险权限,并且需要在运行时动态请求。以下是一个示例代码,展示了如何在Android 10中请求位置权限:
private static final int REQUEST_LOCATION_PERMISSION = 1;
// 检查位置权限
private boolean checkLocationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
return ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
} else {
int permissionResult = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
return permissionResult == PackageManager.PERMISSION_GRANTED;
}
}
// 请求位置权限
private void requestLocationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
}
}
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_LOCATION_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,可以开始使用位置信息
// 在此处执行相关操作
} else {
// 用户拒绝了权限请求,可以根据需要进行相应的处理
}
}
}
if (checkLocationPermission()) {
// 已授予位置权限,可以开始使用位置信息
// 在此处执行相关操作
} else {
requestLocationPermission();
}
以上代码示例中,首先通过checkLocationPermission()方法检查位置权限是否已授予,如果未授予则调用requestLocationPermission()方法请求权限。在onRequestPermissionsResult()方法中处理权限请求结果,如果权限被授予,则可以开始使用位置信息。否则,可以根据需要进行相应的处理。