我正在寻找一种方法来找出Android智能手机上安装的浏览器及其软件包名称。
为什么需要它?
基本上,我的应用程序对某些URL做出反应,即http://bit.ly,所以当点击这样时,他将选择在哪个App中打开它。到目前为止,一切都按预期工作。
如果用户将此应用程序设置为此类链接的默认应用程序,它将始终在此应用程序中打开,而无需进一步询问用户。到目前为止也很好。但通过这样做,他将无法在浏览器中打开此链接。
所以我需要一种方法将此意图直接发送到浏览器,但为此我必须知道用户已将哪个应用设置为http / https方案的默认值(因为如果有,用户可以更改它)安装了多个浏览器)。
发送打算
intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"));
我认为应该不是问题。问题是,我无法发送标准的URL用户名,因为如果用户将其设置为默认值,我的应用程序会再次捕获它。
答案 0 :(得分:1)
我认为应该不是问题
在您的代码的包名和类名中硬连线是 总是 一个问题。
所以我需要一种方法将此意图直接发送到浏览器,但为此我必须知道用户使用哪个应用程序 例如,已设置为http / https方案的默认值(因为用户可以在超过1时更改它) 安装浏览器。)
使用PackageManager
和queryIntentActivityOptions()
过滤您的活动,并获取用户可以选择的其他活动的列表。