Android 10由于文件权限的关系不能使用图片路径直接加载手机储存卡内的图片,除非图片是在应用的私有目录下,所以在Android 10以后,下面的代码无法加载图片。
Bitmap bitmap = BitmapFactory.decodeFile(path);
bitmap == null。并且会有打印一个BitmapFactory: Unable to decode stream: java.io.FileNotFoundException的log。
使用第三方图片加载库也无法正常加载图片。
Glide.with(mContext).load(path).into(imageView); // 加载失败
不过我们可以通过图片uri来加载图片,这种方式在Android 10也是可以的。 先将图片路径转换成uri 。
public static Uri getImageContentUri(Context context, String path) {
Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.Media._ID }, MediaStore.Images.Media.DATA + "=? ",
new String[] { path }, null);