在Android开发中,经过需要用到调用外部应用来打开一个文件,
而且,该文件可能是图片、视频、音频、CAD文件、压缩包文件等等……
/**
* 打开一个文件
*
* @param filePath
* 文件的绝对路径
*/
private void openFile(final String filePath) {
String ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase(Locale.US);
try {
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
String temp = ext.substring(1);
String mime = mimeTypeMap.getMimeTypeFromExtension(temp);
mime = TextUtils.isEmpty(mime) ? "" : mime;
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File(filePath);
intent.setDataAndType(Uri.fromFile(file), mime);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "无法打开后缀名为." + ext + "的文件!", Toast.LENGTH_LONG).show();
}
}
上面用到MimeTypeMap 类,用于获取MIME映射信息,这个方法简单实用,不用自己去写一大堆MIME映射了……
如果mimeTypeMap.getMimeTypeFromExtension(temp)获取的值为null时,设置为""可以让用户自己选择手机已安装的程序进行打开文件
网友评论