微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。