繁体   English   中英

从外部存储打开图像

[英]Open an image from the external storage

我已经尝试了几个小时,使用Intent.ACTION_VIEW从Android的外部存储中打开图像。 正如您可能已经知道的那样,我仍然无法做到这一点。

我在Google各处进行了搜索,并尝试了很多方法来完成这项工作,但是没有一个方法能做到。 我所能找到的都是长达1年的问题。 我尝试使用FileProvider ,最终得到的是:

File imagePath = new File(Environment.getExternalStorageDirectory(), "LyceeLamartine/cache");
File newFile = new File(imagePath, "calendrier.png");
Uri contentUri = FileProvider.getUriForFile(MainActivity.this, "ml.toufic.lyceelamartine.fileprovider", newFile);

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(contentUri, "image/*");
startActivity(intent);

上面的代码成功打开了Google相册,但显示黑屏,其路径似乎为: content://ml.toufic.lyceelamartine.fileprovider/name/calendrier.png ,这似乎是内部存储路径。

我要访问的图像存储在:“ / storage / emulated / 0 / LyceeLamartine / cache / calendrier.png”,并且我正在使用具有Android O(8.0)的手机。

我仍然是Java的初学者,任何帮助将不胜感激!

路径似乎是:content://ml.toufic.lyceelamartine.fileprovider/name/calendrier.png,这似乎是内部存储路径。

那不是一条路。 那是一个Uri 它有一个方案( content )。 它指向您的FileProviderml.toufic.lyceelamartine.fileprovider )。 看起来很好-如果Uri出现问题,则FileProvider在尝试创建它时会引发异常。

上面的代码成功打开了Google相册,但显示黑屏

您的Intent有两个问题。

首先,不要使用通配符MIME类型。 这是您的文件。 知道什么是MIME类型。 使用实际的MIME类型(在本例中为image/png )。

其次,在调用startActivity()之前,在Intent上调用addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)作为设置它的一部分。 目前,没有任何应用有权使用您的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM