Saat link yang diklik atau permintaan terprogram memanggil intent URI web, sistem Android mencoba setiap tindakan berikut, secara berurutan, sampai permintaan berhasil:
- Membuka aplikasi pilihan pengguna yang dapat menangani URI, jika ada yang ditunjuk.
- Membuka satu-satunya aplikasi yang tersedia yang dapat menangani URI.
- Mengizinkan pengguna memilih aplikasi dari dialog.
Ikuti langkah-langkah di bawah untuk membuat dan menguji link ke konten Anda. Anda juga dapat menggunakan App Links Assistant di Android Studio untuk menambahkan Link Aplikasi Android.
Catatan: Mulai Android 12 (API level 31), kode generik intent web me-resolve aktivitas di aplikasi Anda hanya jika aplikasi disetujui untuk domain spesifik yang ada dalam intent web tersebut. Jika aplikasi Anda tidak disetujui untuk domain, intent web me-resolve ke aplikasi browser default pengguna sebagai gantinya.
Menambahkan filter intent untuk link masuk
Untuk membuat link ke konten aplikasi Anda, tambahkan filter intent yang berisi elemen dan nilai atribut berikut dalam manifes Anda:
<action>
- Tentukan tindakan intent
ACTION_VIEW
sehingga bahwa filter intent dapat dijangkau dari Google Penelusuran. <data>
- Tambahkan satu atau beberapa
<data>
tag, yang masing-masing merepresentasikan format URI yang ditetapkan untuk aktivitas. Setidaknya, Tag<data>
harus menyertakanandroid:scheme
.Anda dapat menambahkan atribut tambahan untuk lebih mempersempit jenis URI yang diterima aktivitas. Sebagai misalnya, Anda mungkin memiliki banyak aktivitas yang menerima URI serupa, tetapi hanya berbeda berdasarkan nama jalur. Dalam hal ini, gunakan metode Atribut
android:path
atau varianpathPattern
ataupathPrefix
-nya untuk membedakan mana aktivitas yang harus dibuka sistem untuk jalur URI yang berbeda. <category>
- Menyertakan
BROWSABLE
kategori. Hal ini diperlukan agar filter intent dapat diakses dari web browser. Tanpanya, klik link di browser tidak dapat membawanya ke aplikasi Anda.Juga menyertakan kategori
DEFAULT
. Elemen ini memungkinkan aplikasi Anda merespons intent implisit. Tanpa ini, aktivitas dapat dimulai hanya jika intent tersebut menetapkan nama komponen aplikasi Anda.
Cuplikan XML berikut menunjukkan cara menetapkan filter intent
di manifes Anda untuk deep linking. URI “example://gizmos”
dan
“http://www.example.com/gizmos”
keduanya menyelesaikan aktivitas ini.
<activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_view_http_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos” --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> </intent-filter> <intent-filter android:label="@string/filter_view_example_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos” --> <data android:scheme="example" android:host="gizmos" /> </intent-filter> </activity>
Perhatikan bahwa dua filter intent hanya berbeda berdasarkan elemen <data>
.
Meskipun Anda dapat menyertakan beberapa elemen <data>
dalam filter yang sama,
Anda harus membuat filter terpisah jika maksud Anda adalah mendeklarasikan
URL (seperti kombinasi spesifik dari scheme
dan host
), karena
beberapa elemen <data>
dalam filter intent yang sama sebenarnya digabungkan
untuk memperhitungkan semua variasi atribut gabungan mereka. Misalnya, perhatikan kode berikut:
<intent-filter> ... <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="app" android:host="open.my.app" /> </intent-filter>
Sepertinya ini hanya mendukung https://www.example.com
dan
app://open.my.app
. Namun, SDK ini sebenarnya mendukung keduanya, plus ini:
app://www.example.com
dan https://open.my.app
.
Perhatian: Jika beberapa aktivitas berisi filter intent yang di-resolve menjadi Link Aplikasi Android terverifikasi, tidak ada jaminan terkait aktivitas mana menangani link.
Setelah Anda menambahkan filter intent dengan URI untuk konten aktivitas ke aplikasi Anda
Android dapat merutekan Intent
apa pun
yang memiliki URI yang cocok dengan aplikasi Anda pada runtime.
Untuk mempelajari lebih lanjut tentang mendefinisikan filter intent, lihat Izinkan Aplikasi Lain Memulai Aktivitas Anda.
Membaca data dari intent masuk
Setelah sistem memulai aktivitas melalui filter intent, Anda dapat
menggunakan data yang disediakan oleh Intent
untuk menentukan apa yang perlu Anda render. Telepon
getData()
dan
metode getAction()
untuk mengambil data dan
tindakan yang terkait dengan Intent
yang masuk. Anda dapat
memanggil metode ini kapan saja selama siklus hidup aktivitas, namun
umumnya harus dilakukan selama callback awal seperti
onCreate()
atau
onStart()
.
Berikut cuplikan yang menunjukkan cara mengambil data dari
Intent
:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) val action: String? = intent?.action val data: Uri? = intent?.data }
Java
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData(); }
Ikuti praktik terbaik berikut untuk meningkatkan pengalaman pengguna:
- Deep link harus mengarahkan pengguna langsung ke konten, tanpa prompt, halaman interstisial, atau login apa pun. Pastikan bahwa pengguna dapat melihat konten aplikasi meskipun mereka belum pernah membuka aplikasi. Anda dapat meminta konfirmasi kepada pengguna pada interaksi berikutnya atau saat mereka membuka aplikasi dari Peluncur.
- Ikuti panduan desain yang dijelaskan di Menavigasi dengan Kembali dan Atas agar aplikasi Anda cocok dengan ekspektasi untuk navigasi mundur setelah mereka masuk ke aplikasi Anda melalui deep link.
Menguji deep link Anda
Anda dapat menggunakan Android Debug Menghubungkan dengan alat pengelola aktivitas (am) untuk menguji bahwa filter intent URI yang Anda tentukan untuk deep linking ditetapkan ke aktivitas aplikasi yang benar. Anda dapat menjalankan perintah adb terhadap perangkat atau emulator.
Sintaks umum untuk menguji URI filter intent dengan adb adalah:
$ adb shell am start -W -a android.intent.action.VIEW -d <URI> <PACKAGE>
Misalnya, perintah di bawah ini mencoba melihat aktivitas aplikasi target yang dikaitkan dengan URI yang ditentukan.
$ adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android
Deklarasi manifes dan pengendali intent yang Anda tetapkan di atas mendefinisikan koneksi antara aplikasi Anda dan situs web dan apa yang harus dilakukan dengan tautan yang masuk. Namun, di agar sistem memperlakukan aplikasi Anda sebagai pengendali default untuk satu set URI, Anda harus juga meminta sistem memverifikasi koneksi ini. Pelajaran berikutnya akan menjelaskan cara menerapkan verifikasi ini.
Untuk mempelajari intent dan link aplikasi lebih lanjut, lihat referensi berikut:
- Intent dan Filter Intent
- Mengizinkan Aplikasi Lain Memulai Aktivitas Anda
- Menambahkan Link Aplikasi Android dengan Android Studio