在Android Q中,外部存储的访问权限发生了一些变化。以下是一种解决方法,包含了代码示例:
// 检查读取外部存储的权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// 请求读取外部存储的权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_REQUEST_CODE);
} else {
// 已经有读取外部存储的权限,可以进行相应操作
// ...
}
// 检查写入外部存储的权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// 请求写入外部存储的权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST_CODE);
} else {
// 已经有写入外部存储的权限,可以进行相应操作
// ...
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == READ_EXTERNAL_STORAGE_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 读取外部存储的权限被授予,可以进行相应操作
// ...
} else {
// 读取外部存储的权限被拒绝,无法进行相应操作
}
} else if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 写入外部存储的权限被授予,可以进行相应操作
// ...
} else {
// 写入外部存储的权限被拒绝,无法进行相应操作
}
}
}
通过以上步骤,您可以正确处理Android Q中外部存储访问权限的更改,并根据用户的授权情况进行相应操作。