Java和Android:如何用Intent打开几个文件?

时间:2012-06-26 16:39:02

标签: java android android-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);

这完美无缺。但是如何将几个图像传递给观众呢?

谢谢! 升。

2 个答案:

答案 0 :(得分:1)

  

我想打开图片查看器

没有"图像查看器"在Android中。设备和用户可能拥有许多不同的应用程序,能够查看从本地文件加载的image/jpeg文件。

  

但是如何将几张图片传递给观众?

很抱歉,但没有标准Intent可以打开任何类型的多个文件。

此外,请勿在您的应用中对/mnt/sdcard/进行硬编码。请使用Environment类上的正确方法来确定外部存储上的目录。

答案 1 :(得分:1)

您需要列出要在数组中查看的所有文件。然后显示一个数组,当您拖动时,显示下一个图像。

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();
      }
    }
  }

现在您可以逐个读取数组并显示。