在显式意图中使用intent过滤器

时间:2012-01-02 10:04:24

标签: android android-intent

我使用显式Intent将一个活动转到另一个活动,并在清单文件中声明它。

<activity
    android:name=".Activity2"
    android:label="Activity 2">

    <intent-filter
        action android:name="com.tr.ACTIVITY2" 
        category android:name=”android.intent.category.DEFAULT">
    </intent-filter>
</activity>

它工作正常,但有一本书使用intent-filter,我对使用意图过滤器时感到困惑。

1 个答案:

答案 0 :(得分:12)

当您使用明确的意图时,就像您告诉Android“打开Activity2”。

当您使用隐式意图时,您会告诉Android:“打开一个可以执行这些事情的活动”。 这些东西实际上是您在Activity2的清单中编写的过滤器。

例如,如果您在Activity1中并想要启动Activity2:

你可以明确:

Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);

或暗示:

Intent intent = new Intent();
intent.addAction("myAction");
intent.addCategory("myCategory");
startActivity(intent);

在这种情况下,您应该在清单文件中包含以下内容:

<activity android:name=".Activity2">
   <intent-filter>
      <action android:name="myAction"/>
      <category android:name="myCategory"/>
   </intent-filter>
</activity>