[英]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
)。 它指向您的FileProvider
( ml.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.