【发布时间】:2016-10-18 22:46:52
【问题描述】:
我正在尝试向用户概述可用于打开所选文件的应用程序。以下代码无法正常工作:
String ext = MimeTypeMap.getFileExtensionFromUrl(file2open);
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(file2open), mime);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
如果选择 .txt 文件,则会显示一个包含两个应用程序的列表。但没有一个是正确的。如果选择了 .pdf 文件,在我的手机上,将启动一个 pdf 阅读器,但只启动应用程序。该文件未打开。如何显示设备上安装的所有应用的列表以使用户选择一个,例如,如果文件名不包含扩展名?
【问题讨论】:
-
“但没有一个是正确的”——请更详细地解释您的意思。 “文件未打开”——也许其他应用程序没有对此内容的读取权限。或者,
file2open可能无效。 “如何显示设备上安装的所有应用程序的列表以使用户选择一个,例如,如果文件名不包含扩展名?” ——你不能。您需要以某种方式确定该内容的 MIME 类型。