应用程序选择器Intent不会出现在Android模拟器中

时间:2014-10-21 04:08:53

标签: android android-intent intentfilter

我使用此代码哟显示已安装的浏览器应用程序:

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>

2 个答案:

答案 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应用程序。

如果这个解释不正确,请有人纠正我。