Android Tanggapi URL di Intent

152

Saya ingin niat saya diluncurkan ketika pengguna pergi ke url tertentu: misalnya, pasar android melakukan ini dengan http://market.android.com/ url. begitu juga youtube. Saya ingin punyaku melakukannya.

Isaac Waller
sumber
8
Ada jawaban yang bagus untuk pertanyaan ini di stackoverflow.com/questions/2448213/…
neu242
2
Ada jawaban yang lebih baik untuk pertanyaan ini stackoverflow.com/questions/1609573/...
rds

Jawaban:

192

Saya melakukannya! Menggunakan <intent-filter>. Masukkan yang berikut ini ke file manifes Anda:

<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:host="www.youtube.com" android:scheme="http" />
</intent-filter>

Ini bekerja dengan sempurna!

Isaac Waller
sumber
9
Itu tidak bekerja untuk saya. Bisakah Anda memberikan contoh-Tautan yang akan membuka Aplikasi.
Pascal Klein
7
Saya ingin bereaksi terhadap "www.youtube.com" tetapi TIDAK untuk "www.youtube.com/fr /" ... Ada ide bagaimana saya bisa melakukan itu?
Gilbou
1
Tidak yakin bagaimana ini bekerja untuk seluruh dunia. Tidak berfungsi di chrome dan selalu membuka tautan di peramban sampai Anda menempatkan elemen "android: pathPrefix". Jawabannya anyways tidak memiliki nilai kategori seperti yang disebutkan dalam dokumentasi. Jika masih tidak bekerja untuk seseorang, lihat ini: stackoverflow.com/a/21727055/2695276 PS: berjuang selama berhari-hari karena hal ini.
Rajat Sharma
1
Penting untuk diketahui bahwa ini hanya berfungsi jika Anda membuka tautan DI LUAR peramban, dari aplikasi catatan, atau pesan dari whatsapp, Ini berfungsi pada lollipop
D4rWiNS
10

Anda mungkin perlu menambahkan permutasi yang berbeda ke filter maksud Anda agar berfungsi dalam kasus yang berbeda (http / https / dll).

Misalnya, saya harus melakukan hal berikut untuk aplikasi yang akan terbuka ketika pengguna membuka tautan ke formulir drive Google, www.docs.google.com/forms

Perhatikan bahwa awalan jalur adalah opsional.

        <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="http"
                android:host="docs.google.com"
                android:pathPrefix="/forms"/>
            <data
                android:scheme="http"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="docs.google.com"
                android:pathPrefix="/forms" />
        </intent-filter>
Jordan Réjaud
sumber