从外部存储打开图像
Open an image from the external storage
我已经尝试了几个小时来使用 Intent.ACTION_VIEW
打开 Android 的外部存储中的图像。正如您可能已经发现的那样,我仍然无法做到这一点。
我搜索了整个 Google 并尝试了很多方法来完成这项工作,但是 none 确实如此。我能找到的所有问题都是长达 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”并且我正在使用 phone 和 Android O (8.0)。
我仍然是 Java 的初学者,非常感谢任何帮助!
the path seems to be: content://ml.toufic.lyceelamartine.fileprovider/name/calendrier.png and this seems like an internal storage path.
那不是一条路。那是一个Uri
。它有一个方案(content
)。它指向您的 FileProvider
(ml.toufic.lyceelamartine.fileprovider
)。看起来不错——如果 Uri
有问题,FileProvider
会在您尝试创建它时抛出异常。
The code above opens Google Photos successfully but it shows a black screen
您的Intent
有两个问题。
首先,不要使用通配符 MIME 类型。它是你的 文件。 您知道 MIME 类型是什么。使用实际的 MIME 类型(在本例中,image/png
)。
其次,在调用 startActivity()
之前调用 Intent
上的 addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
作为设置的一部分。目前,没有任何应用有权使用您的内容。
我已经尝试了几个小时来使用 Intent.ACTION_VIEW
打开 Android 的外部存储中的图像。正如您可能已经发现的那样,我仍然无法做到这一点。
我搜索了整个 Google 并尝试了很多方法来完成这项工作,但是 none 确实如此。我能找到的所有问题都是长达 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”并且我正在使用 phone 和 Android O (8.0)。
我仍然是 Java 的初学者,非常感谢任何帮助!
the path seems to be: content://ml.toufic.lyceelamartine.fileprovider/name/calendrier.png and this seems like an internal storage path.
那不是一条路。那是一个Uri
。它有一个方案(content
)。它指向您的 FileProvider
(ml.toufic.lyceelamartine.fileprovider
)。看起来不错——如果 Uri
有问题,FileProvider
会在您尝试创建它时抛出异常。
The code above opens Google Photos successfully but it shows a black screen
您的Intent
有两个问题。
首先,不要使用通配符 MIME 类型。它是你的 文件。 您知道 MIME 类型是什么。使用实际的 MIME 类型(在本例中,image/png
)。
其次,在调用 startActivity()
之前调用 Intent
上的 addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
作为设置的一部分。目前,没有任何应用有权使用您的内容。