要在Android 13上访问特定文件类型的权限,您可以按照以下步骤解决:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// 检查和请求运行时权限
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);
}
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);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case READ_EXTERNAL_STORAGE_REQUEST:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,可以访问文件
// 进行相应的操作
} else {
// 权限被拒绝
}
break;
case WRITE_EXTERNAL_STORAGE_REQUEST:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,可以访问文件
// 进行相应的操作
} else {
// 权限被拒绝
}
break;
}
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,可以访问文件
// 进行相应的操作
} else {
// 请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_REQUEST);
}
请确保替换代码中的READ_EXTERNAL_STORAGE_REQUEST
和WRITE_EXTERNAL_STORAGE_REQUEST
为您自己的请求代码。此外,还应该根据您的需求进行适当的错误处理和用户提示。