Java 从外部存储器中打开映像

Java 从外部存储器中打开映像,java,android,uri,android-external-storage,Java,Android,Uri,Android External Storage,几个小时以来,我一直在尝试从Android的外部存储器中以的意图打开一个图像。ACTION\u VIEW。正如你可能已经发现的那样,我仍然无法做到这一点 我在谷歌搜索了很多地方,我尝试了很多方法,但是没有一个成功。我能找到的都是一岁以下的问题。我尝试使用FileProvider,结果如下: File imagePath = new File(Environment.getExternalStorageDirectory(), "LyceeLamartine/cache"); File newFi

几个小时以来,我一直在尝试从Android的外部存储器中以
的意图打开一个图像。ACTION\u VIEW
。正如你可能已经发现的那样,我仍然无法做到这一点

我在谷歌搜索了很多地方,我尝试了很多方法,但是没有一个成功。我能找到的都是一岁以下的问题。我尝试使用
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);
上面的代码成功地打开了谷歌照片,但它显示了一个黑屏,路径似乎是:
content://ml.toufic.lyceelamartine.fileprovider/name/calendrier.png
这似乎是一条内部存储路径

我想访问的图像存储在:“/storage/emulated/0/LyceeLamartine/cache/calendrier.png”中,我使用的是安卓O(8.0)手机

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

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

这不是一条道路。这是一个
Uri
。它有一个方案(
内容
)。它指向您的
FileProvider
ml.toufic.lyceelamartine.FileProvider
)。这似乎很好-如果
Uri
有问题,
FileProvider
会在您尝试创建它时引发异常

上面的代码成功打开谷歌照片,但显示了一个黑屏

您的
意图有两个问题

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

其次,在调用
startActivity()
之前,在
Intent
上调用
addFlags(Intent.FLAG\u GRANT\u READ\u URI\u PERMISSION)
,作为设置的一部分。目前,没有任何应用程序有权使用您的内容

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

这不是一条道路。这是一个
Uri
。它有一个方案(
内容
)。它指向您的
FileProvider
ml.toufic.lyceelamartine.FileProvider
)。这似乎很好-如果
Uri
有问题,
FileProvider
会在您尝试创建它时引发异常

上面的代码成功打开谷歌照片,但显示了一个黑屏

您的
意图有两个问题

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


其次,在调用
startActivity()
之前,在
Intent
上调用
addFlags(Intent.FLAG\u GRANT\u READ\u URI\u PERMISSION)
,作为设置的一部分。目前,没有任何应用程序有权使用您的内容。

请看-听是否对您有帮助:-感谢穆罕默德的快速回复,但不幸的是,当我真的想使用
intent
打开图像时,我并没有试图在
imageView
中打开图像,这是从2013年开始的。请看-听是否对您有帮助:-感谢穆罕默德的快速回复,但是,不幸的是,当我真的想用
intent
打开图像时,我并没有试图在
imageView
中打开图像,这是从2013年开始的。非常感谢!你救了我,我花了好几个小时才修好!!我认为是
addFlags(Intent.FLAG\u GRANT\u READ\u URI\u PERMISSION)
使它起作用。现在就接受这个!知道如何检查文件是否存在吗@CommonsWare@TouficBatache:
newFile.exists()
。非常感谢!你救了我,我花了好几个小时才修好!!我认为是
addFlags(Intent.FLAG\u GRANT\u READ\u URI\u PERMISSION)
使它起作用。现在就接受这个!知道如何检查文件是否存在吗@CommonsWare@TouficBatache:
newFile.exists()