Android responde a la URL en intención


152

Quiero que mi intención se inicie cuando el usuario vaya a una determinada URL: por ejemplo, Android Market lo hace con http://market.android.com/ urls. Y YouTube también. Quiero que el mío haga eso también.


8
Hay una gran respuesta a esta pregunta en stackoverflow.com/questions/2448213/…
neu242

2
Hay una mejor respuesta a esta pregunta stackoverflow.com/questions/1609573/…
rds

Respuestas:


192

¡Lo hice! Utilizando <intent-filter>. Ponga lo siguiente en su archivo de manifiesto:

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

¡Esto funciona perfectamente!


9
No me funciona. ¿Puede dar un enlace de ejemplo que abra la aplicación?
Pascal Klein

77
Me gustaría reaccionar a "www.youtube.com" pero NO a "www.youtube.com/fr /" ... ¿Alguna idea de cómo puedo hacer eso?
Gilbou


1
No estoy seguro de cómo funciona esto para todo el mundo. Simplemente no funciona en Chrome y siempre abre el enlace en el navegador hasta que coloque el elemento "android: pathPrefix". La respuesta de todos modos no tiene los valores de categoría como se menciona en la documentación. Si todavía no funciona para alguien, consulte esto por favor: stackoverflow.com/a/21727055/2695276 PD: luché durante días por esto.
Rajat Sharma

1
Es importante saber que esto solo funciona si abre el enlace FUERA de un navegador, desde la aplicación de notas o un mensaje de whatsapp. Está funcionando en lollipop
D4rWiNS

10

Es posible que deba agregar diferentes permutaciones a su filtro de intención para que funcione en diferentes casos (http / https / ect).

Por ejemplo, tuve que hacer lo siguiente para una aplicación que se abriría cuando el usuario abriera un enlace a los formularios de Google Drive, www.docs.google.com/forms

Tenga en cuenta que el prefijo de ruta es opcional.

        <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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.