在我的应用程序中,我有一个标记,显示由相机意图或视频拍摄的图像。现在我面临的问题是,当用户点击标记并选择“显示完整图像/视频”时,它应显示与标记关联的图像文件或与标记关联的视频文件。
我试过这个,但没有运气:
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);
}
}
})
答案 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;
}