我使用此代码哟显示已安装的浏览器应用程序:
Log.i(TAG, "Entered startImplicitActivation()");
// TODO - Create a base intent for viewing a URL
// (HINT: second parameter uses Uri.parse())
Intent baseIntent = null;
baseIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.google.com"));
// TODO - Create a chooser intent, for choosing which Activity
// will carry out the baseIntent
// (HINT: Use the Intent class' createChooser() method)
Intent chooserIntent = Intent.createChooser(baseIntent, "Choose App");
// TODO - Start the chooser Activity, using the chooser intent
Log.i(TAG, "Chooser Intent Action:" + chooserIntent.getAction());
startActivity(chooserIntent);
但它会直接在默认浏览器应用中打开链接。为什么呢?
我已创建并安装了另一个简单的浏览器应用,其中包含此intent-fiilter
:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
</intent-filter>
答案 0 :(得分:1)
你的模拟器只有一个接受这种意图的应用程序,在你的情况下只有一个浏览器存在,所以它直接重定向。
尝试添加默认类别并检查 的修改
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
</intent-filter>
答案 1 :(得分:0)
我解决问题的方法是在myBrowser应用中添加android:host="www.google.com"
。根据我的理解,当我启动选择器及其相关意图时,它正在寻找具有ACTION_VIEW
的应用程序以及URL&#34; http://www.google.com&#34的功能;。它没有找到myBrowser,因为它只被设置为接收&#34; http&#34; (android:scheme="http"
),添加主机允许我的Intent Chooser识别myBrowser应用程序。
如果这个解释不正确,请有人纠正我。