【发布时间】:2019-01-10 21:01:44
【问题描述】:
我目前遇到这种情况,似乎没有针对这个特定问题提出任何问题。
我正在尝试在下载后打开 .txt 文件,并且我想检查用户是否有能够在实际下载之前打开该文件的应用。
在我运行 API 26 的模拟手机上,有一个原生 HTML 编辑器,它能够打开文本文件和 Chrome 浏览器应用程序。
我已经第一次打开了这些应用程序,以防万一这可能是一个障碍,我仍然无法让它工作。
要检查文件是否可以打开,我使用以下方法:
getPackageManager().queryIntentActivities(intent, 0);
这永远不会奏效,它总是返回 0 个活动,但是一旦我安装了一个专用的文本编辑器,那么查询中就会返回一个,但只是一个。但是,一旦我继续使用提示菜单,它会列出 3 种打开文本文件的方法:chrome 浏览器、html 编辑器和文本编辑器。
因此它在提示时识别 chrome 浏览器和 html 编辑器能够读取.txt 文件,但查询显然无法这样做。
这就是我构建 Intent 的方式:
intent = new Intent(Intent.ACTION_VIEW);
intent.setType(fileExtension); // this can be a String .txt .pdf etc
当queryIntentActivities 明显无法正常工作时,我如何才能知道是否确实存在能够打开文件的应用程序?
【问题讨论】:
-
您可以分享您构建
intent的代码吗? -
@TWL 我已经添加了用于构建意图的代码。
-
您没有为您的意图提供
URI? -
如果文件尚未下载,则没有 URI。重点是在下载文件之前检查用户是否可以实际打开文件。这在我的第二段中进行了解释。
标签: android openfiledialog android-package-managers