Android 10 ACTION_VIEW 不会显示作用域存储之外的图像

问题描述

我有一张位于 /storage/emulated/0/DCIM/Camera/xyz.jpg图片 我想从我的应用程序中使用 ACTION_VIEW 打开这个图像。 我使用的代码

File file = new File("/storage/emulated/0/DCIM/Camera/xyz.jpg");
Uri uri = FileProvider.getUriForFile(context,context.getApplicationContext().getPackageName() + ".provider",file);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(uri,"image/jpeg");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

我的提供者路径有

<external-path name="external_files" path="." />

上面的意图显示一个选择器来选择画廊/照片应用程序,系统的画廊应用程序给出一个空白屏幕,错误 File format isn't supported or files are corrupted 而照片应用程序只是挂在加载屏幕上。

所以我的问题是:是否可以使用 ACTION_VIEW 直接打开文件(范围外存储)?还是我必须先将文件复制到作用域存储,然后用 ACTION_VIEW 显示它?

答案:无法使用 ACTION_VIEW 打开范围存储之外的文件。也无法复制该文件,因为我们无权访问它。因此,我们可以使用 ACTION_OPEN_DOCUMENT 让用户选择文件,也可以将文件复制到作用域存储并继续使用 ACTION_VIEW。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)