如何使用intent.ACTION_VIEW显示图像和/或视频

时间:2015-06-27 09:09:33

标签: android android-intent

在我的应用程序中,我有一个标记,显示由相机意图或视频拍摄的图像。现在我面临的问题是,当用户点击标记并选择“显示完整图像/视频”时,它应显示与标记关联的图像文件或与标记关联的视频文件。

我试过这个,但没有运气:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri imgUri = Uri.parse("file://" + filep);
intent.setDataAndType(imgUri, "image/* video/*");
startActivity(intent);

然后我尝试下面的代码但是在选择图像时(例如)它会显示图像但是在选择带有与之关联的视频的标记时;它不播放视频:

    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);

    if (someType == IMAGE) {
    Uri imgUri = Uri.parse("file://" + filep);
    intent.setDataAndType(imgUri, "image/*");
    }
    else 
       if (someType == VIDEO) {
           Uri imgUri = Uri.parse("file://" + filep);
           intent.setDataAndType(imgUri, "video/*");
       }
    startActivity(intent);

    }

有没有办法确定与标记关联的文件,然后正确显示文件?

提前致谢。

修改

这是我显示图像/视频意图的完整代码:

.setNeutralButton("Display Full Image/Video",  new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
     String filep = mMarkerImages.get(marker);
      if (filep != null) {

          Intent intent = new Intent();
          intent.setAction(Intent.ACTION_VIEW);
          Uri imgUri = Uri.parse("file://" + filep);
          intent.setDataAndType(imgUri, "image/* video/*");
          startActivity(intent);

            }
    }
}) 

1 个答案:

答案 0 :(得分:0)

尝试使用以下内容,

   public void openFile(String filePath) {
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setDataAndType(Uri.parse("file://" + filePath), Utilities.getInstance().getMimeType(filePath));
        if (i.resolveActivity(context.getPackageManager()) != null) {
            startActivity(i);
        } else {
            Toast.makeText(context, "No application found", Toast.LENGTH_SHORT).show();
        }

这是计算文件的Mime类型的方法。

 public String getMimeType(String filePath) {
        String extension = getFileExtension(filePath);
        String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
        return mimetype == null ? "" : mimetype;
    }