clcurie_11
clcurie_11
2013-07-04 04:35
采纳率: 64.8%
浏览 2.9k

如何打开所有格式的文件?

我想实现一个 browser-like 程序。
我想打开设备能提供的所有的文件格式。
我用的下面的代码只能打开特殊的格式:

String mimetype = mime_type(FileName);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(File), mimetype);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

public String mime_type(String name) {
String type = null;
String[] mime = {".htm\ttext/html", ".html\ttext/html", ".doc\tapplication/msword", ".ppt\tapplication/vnd.ms-powerpoint", ".xls\tapplication/vnd.ms-excel", 
                ".txt\ttext/plain", ".pdf\tapplication/pdf", ".xlsx\tapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 
                ".pptx\tapplication/vnd.openxmlformats-officedocument.presentationml.presentation", ".docx\tapplication/vnd.openxmlformats-officedocument.wordprocessingml.document"};
int i;
for(i = 0; i < mime.length; i++) {
if(name.toLowerCase().endsWith(mime[i].split("\t")[0])) {
return mime[i].split("\t")[1];
}
}
return type;
}

文件的格式我不能全部列出来。
是否有什么方法可以用于所有的格式呢?或者来列出所有的程序让用户选择?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • baimy1985
    balmy 2013-07-04 11:18
    已采纳

    下面这个方法可以得到所有能打开当前文件的程序集合,遍历下list就可以得到对应的应用名
    List list = getPackageManager().queryIntentActivities(
    mimetypeIntent, PackageManager.MATCH_DEFAULT_ONLY);
    if (list.size() > 0) {
    mimetypeIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(mimetypeIntent);
    }

    点赞 评论
  • Baby_Bonnie
    Baby_Bonnie 2013-07-04 06:43

    我发现给 / 设置 mimetype 可以达到效果。
    她会显示所有选择了的安装的app。

    点赞 评论

相关推荐