Menangani Bentrokan Intent Filter

Dalam latihan sebelumnya, kita sudah tahu bahwa elemen <intent-filter> mendefinisikan bagaimana activity kita dipanggil oleh acitivity yang lain. Bagaimana bila activity lain (baik di dalam app yang sama atau terpisah) memiliki nama filter yang sama? Misalkan app kita memiliki activity yang ketiga, dan di file "AndroidManifest.xml" kita berisi kode seperti berikut:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.usingintent">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<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.example.usingintent.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.example.usingintent.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

</application>

</manifest>

Bila kita memanggil method 'startActivity()' dengan intent seperti dalam latihan sebelumnya, maka OS Android akan menampilkan kedua activity tersebut dan menawarkan checkbox yang berisi "Use by default for this action". Dan bila kita check item tersebut dan kemudian memilih salah satu activity, maka berikutnya ketika intent tersebut dipanggil, dia akan memanggil activity yang sudah kita pilih sebelumnya.

Untuk menghapus default tersebut, kita harus ke menu "Settings" dan pilih "Apps" --> Manage apps, dan kemudian pilih nama app. Bila detil-detil app ditunjukkan, silahkan scroll ke bawah dan klik tombol "Clear defaults".

No comments: