在Android中有没有一种方法可以找到打开特定文件的默认应用程序?

3
我知道可以使用PackageManager.queryIntentActivities()来获取ResolveInfo对象列表。但是,如果用户为特定操作(或文件类型)设置了默认应用程序,有没有办法在检索的ResolveInfo对象中找到哪个应用程序被设置为该操作的默认值。
提前致谢。
1个回答

0

您可以在PackageManager上使用resolveActivity()来查找如果在Intent上调用startActivity()将启动什么。如果返回活动选择器,则知道有多个选择,没有设置为首选应用程序,因此会出现选择器。还要注意,在美国的某些HTC设备上,对于某些Intent结构,您将始终获得由HTC提供的中介活动类--{{link1:请参阅此博客文章}}以获取更多详细信息。


感谢您的回答,以及通过您的书籍分享的所有智慧。我会尝试这个方法。 - febinkk
1
还有,我该如何检查返回的 ResolveInfo 是否为选择器活动? - febinkk
@febinkk:查看ResolveInfoactivityInfo。我忘记了选择器活动的名称和包,但如果你尝试一下应该是可以识别的。 - CommonsWare
再次感谢,我会找到名称和包名的,我只是担心硬编码名称和包名不是一个好主意。但现在我想这是不可避免的。 - febinkk
@febinkk:是的,我不知道你怎么能确定它是选择器,除非硬编码。另一个选项是让你调用getPreferredActivities()并找出你想要的是否在其中。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接