问题描述
我有一张位于 /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 (将#修改为@)