Intent Filter: apa itu, cara kerja dan penggunaannya dalam pengembangan

Penulis: IT Sectr Diterbitkan: 2026-05-14 Waktu membaca: 8 mnt

Intent Filter adalah deklarasi deklaratif dalam AndroidManifest.xml yang memberi tahu sistem niat implisit apa yang dapat diproses oleh komponen aplikasi. Menurut Android Developer Guide, filter berisi action, category dan data, yang menjadi dasar sistem merutekan panggilan dari aplikasi lain dan peristiwa sistem. Pengembangan Android menggunakan Intent Filter sebagai mekanisme utama kopling lemah antar komponen dari aplikasi yang berbeda.

Poin Penting

  • Intent Filter — deklarasi XML dalam manifes yang menentukan tipe Intent implisit yang dapat diproses oleh Activity, Service atau BroadcastReceiver.
  • Action menunjukkan tindakan yang harus dilakukan komponen — misalnya ACTION_VIEW untuk melihat data atau ACTION_SEND untuk mengirim konten.
  • Category menetapkan kategori tambahan komponen — BROWSABLE mengizinkan panggilan dari browser, DEFAULT diperlukan untuk Intent implisit.
  • Data menjelaskan URI, tipe MIME atau skema data yang diproses, yang sangat penting untuk konfigurasi deep link dalam aplikasi.
  • Konflik ketika ada beberapa aplikasi yang memproses Intent yang sama diselesaikan dengan dialog pemilihan sistem atau pengaturan default.

Apa itu Intent Filter?

Intent Filter adalah elemen konfigurasi aplikasi Android yang memberi tahu sistem tentang kemampuan komponen untuk memproses tipe tertentu dari niat implisit. Berbeda dengan Intent eksplisit yang menunjuk ke kelas tertentu, Intent implisit hanya berisi deskripsi tindakan yang diminta, dan sistem sendiri menemukan komponen yang cocok berdasarkan filter yang terdaftar.

Filter dideklarasikan di dalam komponen — Activity, Service atau BroadcastReceiver — dalam file AndroidManifest.xml. Setiap filter dapat berisi beberapa elemen action, category dan data. Sebuah komponen dapat memiliki jumlah Intent Filter yang tidak terbatas, masing-masing menggambarkan skenario pemrosesan yang terpisah.

Peran dalam arsitektur Android

Intent Filter menerapkan prinsip kopling lemah antara komponen aplikasi. Aplikasi A tidak perlu mengetahui keberadaan aplikasi B — ia hanya mengirim Intent dengan deskripsi tindakan, dan sistem merutekannya berdasarkan filter. Mekanisme ini mendasari Share Sheet, pemilihan browser, dan pemrosesan deep link.

Tipe Intent: eksplisit dan implisit

Intent eksplisit menunjuk ke kelas spesifik komponen yang akan dijalankan. Mereka digunakan untuk navigasi internal dalam satu aplikasi, ketika pengembang tahu persis Activity mana yang harus dibuka. Intent implisit hanya berisi deskripsi tindakan, dan komponen ditentukan secara dinamis oleh sistem.

Intent Filter bekerja secara eksklusif dengan Intent implisit. Jika dalam Intent ditentukan kelas tertentu, sistem mengabaikan semua filter dan langsung menjalankan komponen yang ditunjuk. Filter hanya diperiksa saat menyelesaikan panggilan implisit, yang menjadikannya elemen kunci interaksi antar aplikasi.

Perbandingan Intent eksplisit dan implisit

KarakteristikIntent EksplisitIntent Implisit
KomponenDitentukan secara eksplisit (className)Ditentukan oleh sistem
Intent FilterTidak diperlukanWajib
ContohstartActivity(Intent(this, ProfileActivity::class.java))Intent(ACTION_VIEW, Uri.parse("https://example.com"))
KeamananLebih tinggi (tanpa penyadapan)Lebih rendah (kemungkinan konflik)

Struktur Intent Filter dalam manifes

Setiap Intent Filter terdiri dari tiga kelompok elemen — action, category dan data — yang kombinasinya menentukan Intent apa yang akan diterima komponen. Filter dianggap berhasil jika Intent sesuai dengan setidaknya satu elemen dari setiap kelompok.

Action menjelaskan tindakan yang dilakukan — melihat, mengedit, mengirim. Category menambahkan konteks pemrosesan tambahan — misalnya kemampuan untuk dijalankan dari browser. Data menentukan format informasi yang diproses melalui URI atau tipe MIME.

Komponen tag intent-filter

Contoh Intent Filter untuk Activity yang membuka tautan ke profil pengguna. Filter mencakup ketiga kelompok elemen untuk perutean yang tepat.

xml
<activity android:name=".ProfileActivity">
    <intent-filter>
        <action
            android:name="android.intent.action.VIEW" />
        <category
            android:name="android.intent.category.DEFAULT" />
        <category
            android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="myapp"
            android:host="profile" />
    </intent-filter>
</activity>

Perhatikan penyebutan wajib category DEFAULT — tanpanya sistem tidak akan mengirimkan Intent implisit ke komponen. Kategori BROWSABLE ditambahkan jika tautan harus diproses dari browser.

Deep link di Android dikonfigurasi melalui Intent Filter dengan action VIEW dan tag data yang berisi skema, host dan jalur. Saat mengklik tautan berbentuk myapp://profile/42, sistem menemukan Activity dengan filter yang cocok dan menjalankannya dengan URI yang dikirimkan. Penting untuk mengonfigurasi pathPrefix, pathPattern atau path dengan benar untuk pencocokan yang tepat.

Mulai Android 6 (API 23) muncul dukungan untuk App Links — deep link terverifikasi melalui HTTPS. Untuk App Links digunakan Intent Filter yang sama, tetapi dengan verifikasi domain tambahan melalui Digital Asset Links. Setelah verifikasi, sistem secara otomatis membuka aplikasi tanpa dialog pemilihan.

Tag data untuk URL

Contoh filter untuk App Link dengan verifikasi melalui tautan HTTPS. Dalam kasus ini skema selalu https, dan host sesuai dengan domain yang ditentukan dalam Digital Asset Links.

xml
<intent-filter android:autoVerify="true">
    <action
        android:name="android.intent.action.VIEW" />
    <category
        android:name="android.intent.category.DEFAULT" />
    <category
        android:name="android.intent.category.BROWSABLE" />
    <data
        android:scheme="https"
        android:host="example.com"
        android:pathPrefix="/profile" />
</intent-filter>

Atribut autoVerify memerintahkan sistem untuk memeriksa Digital Asset Links saat pemasangan aplikasi. Jika verifikasi berhasil, aplikasi secara otomatis menjadi penangan default untuk domain dan jalur yang ditentukan.

Memproses Intent dalam komponen aplikasi

Setelah sistem memilih komponen untuk memproses Intent, pengembang harus mengekstrak data dari niat masuk ke dalam komponen target. Untuk Activity digunakan metode getIntent() di onCreate(), untuk BroadcastReceiver — metode onReceive(), di mana Intent dikirimkan sebagai parameter.

Ekstraksi data meliputi pengambilan action untuk menentukan tipe operasi, data untuk URI dan parameter ekstra untuk informasi tambahan. Masing-masing elemen ini mungkin tidak ada, sehingga pemeriksaan null sebelum penggunaan adalah wajib.

Kode pemrosesan di Activity

Contoh pemrosesan deep link masuk dalam Activity di Kotlin. Kode mengekstrak URI dari Intent dan berdasarkan host dan jalur mengambil keputusan navigasi.

kotlin
class ProfileActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val uri = intent?.data
        if (uri?.host == "profile") {
            val userId = uri.lastPathSegment
            loadProfile(userId)
        }
    }
}

Disarankan menggunakan safe call operator untuk memeriksa intent dan data terhadap null, karena aktivitas dapat dijalankan tanpa deep link masuk. Juga perlu memeriksa host dan pathSegment terhadap null sebelum digunakan dalam navigasi.

Prioritas dan penyelesaian konflik

Jika beberapa aplikasi mendaftarkan Intent Filter yang cocok untuk Intent implisit yang sama, sistem menampilkan dialog pemilihan kepada pengguna. Pengguna dapat memilih aplikasi untuk penggunaan satu kali atau mengatur penangan default. Mulai Android 10, dialog pemilihan hanya ditampilkan pada panggilan pertama, setelah itu sistem mengingat pilihan pengguna.

Untuk mengelola prioritas digunakan atribut android:priority dalam tag intent-filter. Semakin tinggi nilainya, semakin tinggi prioritas komponen dalam penyelesaian konflik. Namun prioritas tidak berfungsi untuk filter dari aplikasi yang berbeda — dalam kasus ini selalu ditampilkan dialog pemilihan, jika tidak ada aplikasi yang ditetapkan sebagai default.

Dialog pemilihan aplikasi

Pengembang dapat secara terprogram memanggil dialog pemilihan melalui Intent.createChooser(), mengirimkan Intent target dan judul. Ini berguna ketika aplikasi ingin secara eksplisit menawarkan pengguna untuk memilih penangan, bahkan jika aplikasi default telah ditetapkan. Misalnya, saat mengirim gambar ke jejaring sosial melalui ACTION_SEND dengan createChooser memastikan dialog ditampilkan terlepas dari pengaturan default.

Kesalahan umum dalam konfigurasi Intent Filter

Salah satu kesalahan paling umum adalah tidak adanya kategori DEFAULT dalam Intent Filter. Pengembang menyalin konfigurasi dari contoh, tetapi lupa menambahkan kategori ini, akibatnya Activity tidak menerima Intent implisit. Sistem tidak melihat filter untuk panggilan implisit, meskipun Intent eksplisit tetap berfungsi.

Kesalahan umum kedua adalah penentuan scheme yang salah dalam tag data tanpa URI lengkap. Jika hanya skema yang ditentukan tetapi host tidak ditentukan, filter akan menerima semua tautan dengan skema ini dari sumber mana pun, yang dapat menyebabkan panggilan yang tidak diinginkan dari sumber yang tidak terverifikasi. Disarankan untuk selalu menentukan setidaknya scheme dan host.

Kesalahan ketiga adalah tidak adanya pemeriksaan intent.data terhadap null dalam kode Activity. Jika Activity dijalankan bukan melalui deep link, tetapi secara standar dari launcher, Intent tidak mengandung URI. Akses ke intent.data tanpa pemeriksaan menyebabkan NullPointerException dan crash aplikasi. Selalu gunakan intent?.data?.toString() dengan operator safe call.

Pertanyaan yang Sering Diajukan

Apakah wajib menyertakan category DEFAULT dalam Intent Filter?

Ya, untuk menerima Intent implisit kategori DEFAULT wajib ada. Tanpanya sistem tidak akan mengirimkan panggilan implisit ke komponen, dan Intent Filter hanya akan bekerja untuk Intent eksplisit yang tidak memeriksa filter.

Berapa banyak Intent Filter yang dapat dimiliki satu Activity?

Tidak ada batasan. Satu Activity dapat berisi berapa pun jumlah Intent Filter. Setiap filter menggambarkan skenario pemrosesan terpisah, misalnya satu filter untuk deep link, lainnya untuk pemrosesan file, ketiga untuk Share Sheet.

Apa perbedaan Intent Filter dengan App Link?

Intent Filter adalah mekanisme umum untuk memproses Intent implisit. App Link adalah kasus khusus Intent Filter dengan verifikasi melalui Digital Asset Links, yang secara otomatis menetapkan aplikasi sebagai penangan default untuk tautan HTTPS di domain tertentu.

Bisakah Intent Filter digunakan untuk Service atau BroadcastReceiver?

Ya, Intent Filter dapat dideklarasikan tidak hanya untuk Activity, tetapi juga untuk Service dan BroadcastReceiver. Untuk Service, ini memungkinkan menjalankan layanan latar belakang dari aplikasi lain, untuk BroadcastReceiver — menerima pesan siaran sistem.

Bagaimana Intent Filter memproses tipe MIME?

Tipe MIME ditentukan dalam tag data melalui atribut mimeType. Filter menentukan tipe data apa yang dapat diproses komponen — misalnya image/* untuk semua gambar atau text/plain hanya untuk teks biasa. Tipe MIME dapat digabungkan dengan skema URI.

Ringkasan

  • Intent Filter — deklarasi XML dalam AndroidManifest.xml yang menentukan Intent implisit apa yang dapat diproses komponen aplikasi.
  • Tiga kelompok — action (tindakan), category (kategori), data (URI dan MIME) membentuk filter; komponen menerima Intent jika semua kelompok yang ditentukan cocok.
  • Deep link dikonfigurasi melalui action VIEW dan tag data dengan skema, host dan jalur, opsional dengan autoVerify untuk App Links.
  • App Links — tautan HTTPS terverifikasi melalui Digital Asset Links, tidak memerlukan dialog pemilihan aplikasi.
  • Konflik ketika beberapa filter cocok diselesaikan dengan dialog sistem atau prioritas untuk komponen aplikasi yang sama.
  • Pemrosesan Intent masuk dilakukan melalui intent.data di Activity atau onReceive di BroadcastReceiver dengan pemeriksaan null wajib.
  • Penerapan — Intent Filter digunakan untuk interaksi antar aplikasi, pemrosesan tautan, file dan peristiwa sistem.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga