该错误提示表明在Android 9及以上版本中,应用程序没有访问外部存储权限,因此无法打开指定路径的文件。解决此问题的方法如下:
// 检查是否已经授予了外部存储权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// 如果没有权限,则请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
} else {
// 如果已经有权限,可以直接访问外部存储
openImage();
}
onRequestPermissionsResult
方法中添加以下代码:@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限被授予,可以访问外部存储
openImage();
} else {
// 权限被拒绝,无法访问外部存储
Toast.makeText(this, "权限被拒绝,无法打开图片", Toast.LENGTH_SHORT).show();
}
}
}
openImage
方法中打开图片文件:private void openImage() {
File imageFile = new File("/storage/emulated/0/Pictures/myPic.png");
Uri imageUri = Uri.fromFile(imageFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(imageUri, "image/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
请注意,以上代码示例中的路径/storage/emulated/0/Pictures/myPic.png
只是一个示例路径,实际使用时,应该根据你的文件存储位置进行调整。