我想實現一個 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;
}
文件的格式我不能全部列出來。
是否有什麼方法可以用於所有的格式呢?或者來列出所有的程序讓用戶選擇?
下面這個方法可以得到所有能打開當前文件的程序集合,遍歷下list就可以得到對應的應用名
List list = getPackageManager().queryIntentActivities(
mimetypeIntent, PackageManager.MATCH_DEFAULT_ONLY);
if (list.size() > 0) {
mimetypeIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(mimetypeIntent);
}