在Android Q及更高版本中,为确保应用程序具有适当的权限,需要使用不同的方法从文件加载图像。下面是使用ContentResolver和ImageDecoder加载图像的示例代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver contentResolver = getContentResolver();
Uri uri = Uri.parse("file:///storage/emulated/0/my_image.jpg");
ImageDecoder.Source source = ImageDecoder.createSource(contentResolver, uri);
try {
Bitmap bitmap = ImageDecoder.decodeBitmap(source);
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
} else {
File file = new File(Environment.getExternalStorageDirectory(), "my_image.jpg");
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageView.setImageBitmap(bitmap);
}
请注意,此代码将检查设备上的Android版本,如果版本为Android Q或更高版本,则使用ContentResolver和ImageDecoder加载图像。否则,它将使用传统的方法从文件加载图像。