gpt4 book ai didi

android - 如何检查是否有可以打开某个文件的应用程序

转载 作者:行者123 更新时间:2023-11-29 18:36:36 25 4
gpt4 key购买 nike

我目前遇到这种情况,似乎没有人针对这个特定问题提出任何问题。

我试图在下载后打开一个 .txt 文件,我想在实际下载之前检查用户是否拥有能够打开该文件的应用程序。

在我运行 API 26 的模拟手机上,有一个能够打开文本文件和 Chrome 浏览器应用程序的原生 HTML 编辑器。

我已经第一次打开了这些应用程序,以防万一这可能是一个障碍,但我仍然无法让它工作。

要检查文件是否可以打开,我使用以下方法:

getPackageManager().queryIntentActivities(intent, 0);

这永远行不通,它总是返回 0 个 Activity ,但是一旦我安装了专用的文本编辑器,它就会在查询中返回,但只是那个。但是,一旦我继续使用提示菜单,它就会列出 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 明显无法正常工作时,我如何才能确定是否确实存在能够打开文件的应用程序?

最佳答案

我不知道您是否有意遗漏了 URI (setData()),但如果没有它,它将无法正常工作。

此外,如果没有 URI,这也可能因设备而异,因为在我的设备上使用您的代码,我什至看不到 Chrome 和 HTML 编辑器,无论是在我 dl 文本编辑器之前还是之后。是的,这很奇怪。

无论如何,坚持您的代码,只需添加一个虚拟 uri,您就可以提取所有正确的应用程序:

Uri uri = Uri.parse("content://dummy");
intent.setDataAndType(uri, "text/plain");

但是如果您在检查此解析之前确实有一个有效的 URI,那么我看不到您的问题。不管是不是假 URI,我都能看到所有可以处理它的应用程序。

旁注:对于有效的 URI,建议现在使用 FileProvider,请参阅:

关于android - 如何检查是否有可以打开某个文件的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54136821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com