您的位置:首页 > 移动开发 > Android开发

安卓调用手机上的应用打开不同类型的文件

2017-04-21 17:49 489 查看
网上看别人写了一大堆代码,都太麻烦了,在jdk的api中找到了如下两个方法,实现获取文件类型,获取类型后调用系统的intent来打开文件。

代码原理:

public interface FileNameMap {
/**
* Returns the MIME type (such as "text/plain") for the given filename, or null.
*/
public String getContentTypeFor(String filename);
}


/**
* Return the MIME type for the given extension.
* @param extension A file extension without the leading '.'
* @return The MIME type for the given extension or null iff there is none.
*/
public String getMimeTypeFromExtension(String extension) {
return MimeUtils.guessMimeTypeFromExtension(extension);
}


功能详见代码:

try {
FileNameMap fileNameMap = URLConnection.getFileNameMap();
String path = "/mnt/test/TB_DRAWING.xls";
File file = new File(path);
String type = fileNameMap.getContentTypeFor(path);
//                  解决部分三星手机无法获取到类型的问题
if (TextUtils.isEmpty(type)) {
String extension = MimeTypeMap.getFileExtensionFromUrl(path);
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
if(TextUtils.isEmpty(type)){
Toast.makeText(context, "无法正确读取文件类型,请尝试在文件夹中直接打开!", Toast.LENGTH_SHORT).show();
return;
}

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, type);
startActivity(intent);
} catch (Exception e) {
Toast.makeText(context, "手机上未安装能打开该文件的程序!", Toast.LENGTH_SHORT).show();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐