我正在尝试打开放在文件夹中的文件。我们的想法是提供下载的应用程序可以打开的最大类型的office文件+ pdf。所以我下载了14种不同的文件类型样本,如.docx,.ppt,.pdf等。
我有WPS办公室作为运行这些的应用程序。但问题是,当我使用下面的代码时,直接文件在WPS办公应用程序中打开。如果我更改为target.setDataAndType(Uri.fromFile(open), "application/pdf");
,那么它会显示adobe reader和WPS office。有没有办法在没有特别指定/ pdf或/ msword的情况下获得打开文件的最佳选择?这样我就可以根据输入类型得到可用的应用列表。
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(Uri.fromFile(open), "application/msword");
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Intent intent = Intent.createChooser(target, "Open File");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Instruct the user to install a PDF reader here, or
// something
Toast.makeText(
getApplicationContext(),
"Please install proper document reader in your device to open this file",
Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:1)
我假设您要使用文件扩展名打开应用程序,而不指定应用程序/ * 。
File file = new File(filePath);
MimeTypeMap map = MimeTypeMap.getSingleton();
String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName());
String type = map.getMimeTypeFromExtension(ext);
if (type == null)
type = "*/*";
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.fromFile(file);
intent.setDataAndType(data, type);
startActivity(intent);
这应该获得扩展并打开“尽可能好的”应用程序