我有一到三张照片我想要显示我的应用程序。直到运行时我才知道从互联网上下载了多少张照片。
我无法弄清楚如何创建一个Intent来显示照片。现在我正在我创建的文件夹下的sdcard上缓存它们做类似的事情(没有错误检查):
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,但图像查看器显示黑页。如果我传入文件,它只显示一个文件而不显示其他文件。
我知道这一定是可行的,因为我可以看到使用Gallery应用程序并在我手动选择文件夹时显示照片。每次我研究这个问题时,评论都说不可能显示多个图像。
我怀疑有一些神奇的咒语,但是什么?
答案 0 :(得分:4)
我认为你的目标不受你的控制。如果查看器应用程序设计为处理多个图像或目录,您可以要求它显示您想要的,但您被定义为查看器的模式。
我安装了名为QuickPic的第三方图片查看器。我刚刚测试了你的代码片段,系统弹出了一个选择器对话框,让我选择应用程序来显示文件夹中的图像。如果我选择原生图库,我看到的只是一个空文件夹,而Quickpic可以按我的意愿工作。
PS:我告诉我的应用程序这个文件夹的Uri:
intent.setDataAndType(Uri.fromFile(new File("//mnt/sdcard/test/")), MimeTypeMap.getSingleton().getMimeTypeFromExtension("png"));