[英]Java and Android: How to open several files with an Intent?
我确信这是一个微不足道的问题,但我没有找到答案。
我正在制作一个Android应用程序,我想从中打开显示多个图像的图像查看器。 我知道如何只使用一个图像:
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file1 = new File("/mnt/sdcard/photos/20397a.jpg");
intent.setDataAndType(Uri.fromFile(file1), "image/jpg");
startActivity(intent);
这非常有效。 但是如何将几个图像传递给观众?
谢谢!! L.
我想打开图像查看器
Android中没有“图像查看器”。 设备和用户可能有许多不同的应用程序,它们能够查看从本地文件加载的image/jpeg
文件。
但是如何将几个图像传递给观众?
抱歉,没有标准的Intent
可以打开任何类型的多个文件。
此外,请不要在您的应用程序中硬编码/mnt/sdcard/
。 请使用Environment
类上的正确方法来确定外部存储上的目录。
您需要列出要在数组中查看的所有文件。 然后显示其中一个数组,拖动时显示下一个图像。
ArrayList list;
private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Ansi date format
list = new ArrayList();
String path = "c:/temp/";
File dir = new File(path);
for (String dirListing : dir.list()) {
if ((dirListing.endsWith(".jpg")) ||
(dirListing.endsWith(".png")) ||
(dirListing.endsWith(".gif"))) {
try { // write all file-info to a arraylist
File f = new File(path+dirListing);
list.add(f.getCanonicalPath());
list.add(f.getName());
list.add(String.valueOf(f.length()));
String lastModified = dateFormat.format(new Date(f.lastModified()));
list.add(lastModified);
}
catch (IOException e) {
e.printStackTrace();
}
catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
}
}
现在您可以逐个读取数组并显示。
不要使用硬编码路径。
改变这一行:
File file1 = new File("/mnt/sdcard/photos/20397a.jpg");
至
File sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
它会定位到
/storage/emulated/0/Picture
您可以删除Environment.DIRECTORY_PICTURES
如果您想要SD卡的父目录。
由于您指定的是单个文件20397a.jpg
,这就是您无法看到其他图像的原因。
如果你想看到除图像以外的其他内容,那么将' image/jpg
'更改为' image/*
'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.