clcurie_11 2013-07-04 04:35 采纳率: 6.7%
浏览 2880
已采纳

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

我想实现一个 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条回答

  • 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);
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块