使用隐式意图时,活动不会出现在“选配器”对话框中

时间:2014-10-11 12:44:47

标签: android android-intent intentfilter

我想从另一个应用程序IntentsLab启动MyBrowser,一个显示内置浏览器应用程序等网页的应用程序。

我跟着Launch custom android application from android browser设置了意图,而the official Intent and Intent-filters guide跟着说“你需要包含CATEGORY_DEFAULT来接收隐含意图”。

所以我的意图过滤器写得如此:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.categroy.DEFAULT" />
            <data android:scheme="http" />
        </intent-filter>

IntentsLab中用于启动新活动的父活动的代码是:

    Intent baseIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
    String title = "Use Browser";        
    Intent chooserIntent = Intent.createChooser(baseIntent, title);        
    if(chooserIntent != null)   startActivity(chooserIntent);

MyBrowser应用程序未显示在选择器对话框中。但是,当我在IntentsLab中创建一个Activity并向其添加一个相同的intent-filter时,此活动将显示在选择器对话框中。代码有什么问题吗?或者,对于同一个应用程序中的活动的隐含意图与不同的应用程序中的活动有什么区别?

1 个答案:

答案 0 :(得分:2)

为MyBrowserActivity提供了我的AndroidManifest.xml。它对我来说很完美。即使我正在做Android编程课程:)

<activity android:name=".MyBrowserActivity" android:label="@string/app_name">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http" />

    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
  <!-- TODO - Add necessary intent filter information so that this
                    Activity will accept Intents with the
                    action "android.intent.action.VIEW" and with an "http"
                    schemed URL -->
</activity>