使用Content Provider在内部存储中打开图像

时间:2018-07-03 22:16:36

标签: android android-intent kotlin android-contentprovider android-image

假设我将图像打包到我的应用中,并且希望使用默认的图像查看器/无论用户选择哪种图像查看器将其打开为默认图像。我该怎么办?

已经有此帖子:Open an image using URI in Android's default gallery image viewer,但许多答案已过时,因为由于引入了android N,必须使用内容提供商。

我唯一能找到的答案就是这个:

File file = ...;
final Intent intent = new Intent(Intent.ACTION_VIEW)//
                                    .setDataAndType(VERSION.SDK_INT >= VERSION_CODES.N ?
                                                    android.support.v4.content.FileProvider.getUriForFile(this,getPackageName() + ".provider", file) : Uri.fromFile(file),
                            "image/*").addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

但是,根据此解决方案的作者所述,此代码仅适用于外部存储的图像,不适用于可能与我的应用打包在一起的图像。

1 个答案:

答案 0 :(得分:0)

您将无法通过外部应用程序打开与应用程序打包在一起的图像(可绘制或其他资源)。您应该首先将其复制到(至少)internal file storage中。之后,您可以实现FileProvider来提供对此文件的访问。

如果您需要更多详细信息,请告诉我。希望能有所帮助。