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

0 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>
Run Code Online (Sandbox Code Playgroud)

它工作正常,但有一本书intent-filter用于此,我很困惑当我们使用意图过滤器.

hor*_*tza 12

当你使用明确的意图时,就像你告诉Android"打开Activity2".

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

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

你可以明确:

Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

或暗示:

Intent intent = new Intent();
intent.addAction("myAction");
intent.addCategory("myCategory");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

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

<activity android:name=".Activity2">
   <intent-filter>
      <action android:name="myAction"/>
      <category android:name="myCategory"/>
   </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)