Katakanlah saya ingin mendefinisikan bahwa URI seperti:
myapp://path/to/what/i/want?d=This%20is%20a%20test
harus ditangani oleh aplikasi atau layanan saya sendiri. Perhatikan bahwa skemanya adalah "myapp"
dan tidak "http"
, atau "ftp"
. Itulah tepatnya yang saya maksudkan: untuk menentukan skema URI saya sendiri secara global untuk OS Android. Apakah ini mungkin?
Ini agak analog dengan apa yang sudah dilakukan beberapa program, misalnya sistem Windows, seperti Skype ( skype://
) atau program pengunduh torrent apa pun ( torrent://
).
Jawaban:
Ini sangat mungkin; Anda mendefinisikan skema URI di AndroidManifest.xml Anda, menggunakan
<data>
elemen. Anda menyiapkan filter maksud dengan<data>
elemen yang diisi, dan Anda akan dapat membuat skema Anda sendiri. ( Lebih lanjut tentang filter maksud dan resolusi maksud di sini .)Ini contoh singkatnya:
Sesuai dengan niat tersirat yang bekerja, Anda perlu mendefinisikan setidaknya satu tindakan dan satu kategori juga; di sini saya memilih TAMPILAN sebagai aksinya (meskipun bisa berupa apa saja), dan memastikan untuk menambahkan kategori DEFAULT (karena ini diperlukan untuk semua maksud tersirat). Perhatikan juga bagaimana saya menambahkan kategori BROWSABLE - ini tidak perlu, tetapi itu akan memungkinkan URI Anda dapat dibuka dari browser (fitur yang bagus).
sumber
Melengkapi jawaban @DanielLew , untuk mendapatkan nilai parameter yang harus Anda lakukan ini:
Contoh URI:
myapp://path/to/what/i/want?keyOne=valueOne&keyTwo=valueTwo
dalam aktivitas Anda:
sumber
http://www.host.com/directory/value
? Bagaimana kita bisa mendapatkan inivalue
?uri.getLastPathSegment();
Saya sangat menyarankan agar Anda tidak mendefinisikan skema Anda sendiri. Ini bertentangan dengan standar web untuk skema URI, yang mencoba untuk secara ketat mengontrol nama-nama itu untuk alasan yang baik - untuk menghindari konflik nama antara entitas yang berbeda. Setelah Anda meletakkan tautan ke skema Anda di situs web, Anda telah memasukkan nama kecil itu ke seluruh ruang nama Internet, dan harus mengikuti standar-standar itu.
Jika Anda hanya ingin memiliki tautan ke aplikasi Anda sendiri, saya sarankan Anda mengikuti pendekatan yang saya jelaskan di sini:
Bagaimana cara mendaftarkan beberapa namespace URL (myapp: //app.start/) untuk mengakses program Anda dengan memanggil URL di browser di Android OS?
sumber
Pendekatan alternatif lain untuk Diego adalah menggunakan perpustakaan:
https://github.com/airbnb/DeepLinkDispatch
Anda dapat dengan mudah mendeklarasikan URI yang ingin Anda tangani dan parameter yang ingin Anda ekstrak melalui anotasi pada Kegiatan, seperti:
Sebagai nilai tambah, parameter kueri juga akan diteruskan ke Aktivitas.
sumber
Seperti pertanyaan yang diajukan tahun lalu, dan Android banyak berkembang pada skema URI ini.
Dari skema URI asli, hingga tautan dalam, dan sekarang Tautan Aplikasi Android.
Android sekarang merekomendasikan untuk menggunakan URL HTTP, bukan mendefinisikan skema URI Anda sendiri. Karena Tautan Aplikasi Android menggunakan URL HTTP yang menaut ke domain situs web yang Anda miliki, jadi tidak ada aplikasi lain yang dapat menggunakan tautan Anda. Anda dapat memeriksa perbandingan tautan dalam dan tautan Aplikasi Android dari sini
Sekarang Anda dapat dengan mudah menambahkan skema URI dengan menggunakan opsi Android Studio: Tools> App Links Assistant. Silakan merujuk detail ke dokumen Android: https://developer.android.com/studio/write/app-link-indexing.html
sumber