Android répond à l'URL dans l'intention

152

Je veux que mon intention soit lancée lorsque l'utilisateur accède à une certaine URL: par exemple, le marché Android le fait avec http://market.android.com/ urls. youtube aussi. Je veux que le mien fasse ça aussi.

Isaac Waller
la source
8
Il y a une excellente réponse à cette question sur stackoverflow.com/questions/2448213/…
neu242
2
Il y a une meilleure réponse à cette question stackoverflow.com/questions/1609573/…
rds

Réponses:

192

Je l'ai fait! Utilisation <intent-filter>. Mettez ce qui suit dans votre fichier manifeste:

<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>

Cela fonctionne parfaitement!

Isaac Waller
la source
9
Cela ne fonctionne pas pour moi. Pouvez-vous s'il vous plaît donner un exemple de lien qui ouvrirait l'application.
Pascal Klein
7
J'aimerais réagir à "www.youtube.com" mais PAS à "www.youtube.com/fr /" ... Une idée de comment je peux faire ça?
Gilbou
1
Je ne sais pas comment cela fonctionne pour le monde entier. Ne fonctionne tout simplement pas sur Chrome et ouvre toujours le lien dans le navigateur jusqu'à ce que vous placiez l'élément "android: pathPrefix". De toute façon, la réponse n'a pas les valeurs de catégorie mentionnées dans la documentation. Si cela ne fonctionne toujours pas pour quelqu'un, référez-vous ceci s'il vous plaît: stackoverflow.com/a/21727055/2695276 PS: lutté pendant des jours à ce sujet.
Rajat Sharma
1
Il est important de savoir que cela ne fonctionne que si vous ouvrez le lien À L'EXTÉRIEUR d'un navigateur, depuis l'application Notes, ou un message de WhatsApp, il fonctionne sur sucette
D4rWiNS
10

Vous devrez peut-être ajouter différentes permutations à votre filtre d'intention pour qu'il fonctionne dans différents cas (http / https / ect).

Par exemple, je devais faire ce qui suit pour une application qui s'ouvrirait lorsque l'utilisateur ouvrait un lien vers les formulaires Google Drive, www.docs.google.com/forms

Notez que le préfixe de chemin est facultatif.

        <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
la source