Android ACTION_VIEW 多张图片

4
我希望你的应用程序能够显示一到三张照片。我不知道运行时会从互联网上下载多少张照片。
我无法找到创建一个Intent来显示照片的方法。现在,我正在将它们缓存到SD卡上,并通过创建文件夹来存储它们(没有进行错误检查):
final File externalDirectory = Environment.getExternalStorageDirectory();
final String folder = externalDirectory.getAbsolutePath() + "/Android/data/" + packageName + "/files/";

这在Android开发者参考文献中有详细解释。

我可以通过以下方式显示一张照片:

final Uri uri = Uri.fromFile(file);
final Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "image/*");
Util.startActivity(this, intent);

这里的file是一张已保存照片的文件。

如果有帮助的话,我可以将图片保存到我的应用程序可用的任何位置,但我不想让这些照片显示在用户其他个人照片列表中,因为那可能会很烦人。

图像查看器有一个“幻灯片”菜单选项,因此它必须知道多个照片。

我可以创建自己的图像查看器,但那似乎是额外的工作,超出了我合理的期望。即使我这样做了,我也希望用户能够安装第三方图像查看器,并获得更好的体验,包括平移、缩放、共享等功能。

我尝试使用缓存的照片文件目录来创建Uri,但图像查看器只显示黑色页面。如果我传入文件,则只显示一个文件而没有其他文件。

我知道这一定是可能的,因为我可以使用画廊应用程序并手动选择文件夹来显示照片。每次我研究这个问题时,评论都说无法显示多个图像。

我怀疑有某种神奇的咒语,但是什么呢?

1个回答

4
我认为你的目标超出了你的控制范围。如果查看应用程序设计用于处理多个图像或目录,则可以要求它按您的要求显示,但是您被定义为查看者的模式。
我已经安装了一个称为QuickPic的第三方图像查看器。我刚刚测试了您的代码片段,系统弹出了一个选择器对话框,让我选择在文件夹中显示图像的应用程序。如果我选择本机库,则会看到一个空文件夹,而Quickpic按照我的要求工作。
附注:我以这种方式告诉我的应用程序文件夹的Uri:
intent.setDataAndType(Uri.fromFile(new File("//mnt/sdcard/test/")), MimeTypeMap.getSingleton().getMimeTypeFromExtension("png"));

谢谢。我会标记这个问题已回答,但我想看看是否有其他人能提出更好的解决方案。我可以看到画廊应用程序可以实现我想要的功能,所以一定有方法,即使不容易。 - Mitch
@Mitch 我建议你审查一下图库的源代码,这样你就能够确认它是否设计成可以完成你的任务。我知道它有幻灯片功能,但这并不等同于在目录中显示图像文件。 - Huang
我已经尽力审查了它。我认为我看到了一个地方,其中MIME类型指示了一个目录。我试图使用它,但我看到了手机上的每张照片,而不仅仅是我告诉它的目录中的照片。你很可能是对的,没有办法做到我想要的事情,但让用户看到照片并不依赖于他们足够聪明以理解他们需要安装第三方图像查看器,当他们看到黑屏时很重要。我相信他们会简单地认为我的应用程序出了问题。如果我在本周末之前没有得到答案,我将把你的答案标记为惊人的正确。 - Mitch
1
好的,仍然没有答案,所以我会假设显示多个图像要么是不可能的,要么是文档记录得如此之差,以至于没有人知道。直到有人能够证明我是错的。 - Mitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接