2012-03-03 64 views
1

我有一张和三张照片我希望我的应用显示。直到运行时,我才会知道从互联网上下载了多少照片。Android ACTION_VIEW多张图片

我无法弄清楚如何创建一个意图来显示照片。现在我我做类似的东西(没有错误检查)创建一个文件夹下缓存他们在SD卡:

final File externalDirectory = Environment.getExternalStorageDirectory(); 
final String folder = externalDirectory.getAbsolutePath() + "/Android/data/" + packageName + "/files/"; 

这在Android Developer Reference解释。

我可以得到一张照片做,显示如下:

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

file是保存照片的文件。

如果有帮助,我可以将图像保存到提供给我的应用程序的任何位置,但我宁愿没有照片显示了用户的其他个人照片列为可能令人反感。

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

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

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

我知道这一定是可能的,因为我可以看到使用图库应用程序,并显示照片,如果我手动选择的文件夹。每次我研究这个问题时,评论说它不可能显示多个图像。

我怀疑有一些魔法咒语,但是什么?

回答

4

我认为你的目标超出了你的控制范围。如果查看器应用程序旨在处理多个图像或目录,则可以让它根据需要显示,但是您已根据查看器的模式进行了定义。

我已经安装了名为QuickPic第三方的图像浏览器。我只是测试了你的代码片段,系统弹出一个选择器对话框让我选择应用程序来显示文件夹中的图像。如果我选择本地图库,我所看到的仅仅是一个空文件夹,而Quickpic正如我所愿。

PS:我告诉我的应用程序的文件夹这样的乌里:

intent.setDataAndType(Uri.fromFile(new File("//mnt/sdcard/test/")), MimeTypeMap.getSingleton().getMimeTypeFromExtension("png")); 
+0

谢谢。我会将此标记为已回答,但我想看看是否有其他人可以提出某些问题。我可以看到Gallery应用程序做我想要的,所以一定有办法,即使它不容易。 – Mitch 2012-03-05 03:54:21

+0

@Mitch我建议你查看图库的源代码,以便你确信它是否被设计来完成你的任务。我知道它有一个幻灯片放映功能,但这不同于在目录中显示图像文件。 – Huang 2012-03-05 04:40:56

+0

我确实对我的能力进行了审查。我以为我看到了一个mime类型表示dir的地方。我试图使用它,但我看到了手机上的所有照片,不仅仅是我告诉它的目录。你很可能是对的,没有办法做我想做的事,但重要的是让用户看到照片,而不要依赖他们足够的理解,以了解他们需要安装第三方图像查看器时,看到黑色屏幕。我相信他们会简单地假设我的应用程序已损坏。如果我在本周末没有得到答案,我会将您的答案标记为非常正确。 – Mitch 2012-03-05 16:25:10