问题描述
- 如何打开所有格式的文件?
-
我想实现一个 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 = {".htmttext/html", ".htmlttext/html", ".doctapplication/msword", ".ppttapplication/vnd.ms-powerpoint", ".xlstapplication/vnd.ms-excel", ".txtttext/plain", ".pdftapplication/pdf", ".xlsxtapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ".pptxtapplication/vnd.openxmlformats-officedocument.presentationml.presentation", ".docxtapplication/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; }
文件的格式我不能全部列出来。
是否有什么方法可以用于所有的格式呢?或者来列出所有的程序让用户选择?
解决方案
下面这个方法可以得到所有能打开当前文件的程序集合,遍历下list就可以得到对应的应用名
List list = getPackageManager().queryIntentActivities(
mimetypeIntent, PackageManager.MATCH_DEFAULT_ONLY);
if (list.size() > 0) {
mimetypeIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(mimetypeIntent);
}
解决方案二:
我发现给 / 设置 mimetype 可以达到效果。
她会显示所有选择了的安装的app。
时间: 2024-09-21 18:02:07