2009-02-08 11 views
146

Quiero que mi intento se inicie cuando el usuario vaya a una determinada url: por ejemplo, el mercado android hace esto con http://market.android.com/ urls. también lo hace youtube. Quiero que los míos hagan eso también.Android Responde a la URL en la intención

+8

Hay una gran respuesta a esta cuestión en http://stackoverflow.com/questions/2448213/how-to-implement-my-very-own-uri-schema-on-android/2448531#2448531 – neu242

+2

Hay una mejor respuesta para esta pregunta http://stackoverflow.com/questions/1609573/intercepting-links-from-the-browser-to-open-my-android-app – rds

Respuesta

183

¡Lo hice! Usando <intent-filter>. Coloque 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 a la perfección!

+8

No funciona para mí. ¿Puedes dar un ejemplo? Enlace que abriría la aplicación. –

+7

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

+0

Esto funciona perfectamente, gracias, pero también necesito obtener la URL que se hizo clic para abrir la aplicación. ¿alguien puede explicar cómo hacer esto? – boogieman

7

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

Por ejemplo, yo tenía que hacer lo siguiente para una aplicación que abriría cuando el usuario abre un enlace a formas de unidad de Google, 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> 
Cuestiones relacionadas