Resolve Intent Filter Collision

Description

The <intent-filter> element defines how your activity can be invoked by another activity.

What happens if another activity in either the same or a separate application has the same filter name?

Example

For example, suppose your application has another activity named Activity3, with the following entry in the AndroidManifest.xml file:


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.java2s.app" >
/*from   ww  w .ja va2  s. c om*/
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.java2s.app.MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:label="Second Activity"
            android:name=".SecondActivity" >
            <intent-filter >
                <action android:name="com.java2s.SecondActivity" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
        android:label="Third Activity"
        android:name=".ThirdActivity" >
        <intent-filter >
            <action android:name="com.java2s.SecondActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    </application>

</manifest>

If you call the startActivity() method with the following intent, then the Android OS will display a selection of activities:


startActivity(new Intent("com.java2s.SecondActivity"));

If you check the "Use by default for this action" item and then select an activity, then the next time the intent "com.java2s.SecondActivity" is called again, it will launch the previous activity that you have selected.

Clear

To clear this default,

  • go to the Settings application in Android
  • select Apps -> Manage applications,
  • select the application name.
  • When the details of the application are shown, scroll down to the bottom and click the Clear defaults button.




















Home »
  Android »
    Android Basics »




Hello Android
Resources
Activity
Calendar
Camera
Contact
Content Provider
Database
Hardware
Intent
Location
Media
Network
Notification
Preference
Sensor
Service
SMS