Intents de Android con Chrome

Puedes iniciar apps directamente desde una página web en un dispositivo Android con un intent de Android. Puedes implementar un gesto del usuario para iniciar la app con un esquema personalizado o usar la sintaxis intent:.

Crea un ancla de intent y, luego, insértala en una página para que el usuario pueda elegir iniciar la app. Esto permite flexibilidad en cómo y cuándo se inician las apps, lo que significa que puedes pasar información a la app con los elementos adicionales de intent.

La sintaxis básica de un URI basado en intents es la siguiente:

intent:  
   HOST/URI-path // Optional host  
   #Intent;  
      package=\[string\];  
      action=\[string\];  
      category=\[string\];  
      component=\[string\];  
      scheme=\[string\];  
   end;

Consulta el código fuente de Android para obtener detalles sobre el análisis.

Cuando no se resuelve un intent o no se inicia una aplicación externa, se puede redireccionar al usuario a la URL de resguardo. Puedes especificar una URL de resguardo con un intent adicional:

S.browser_fallback_url=[encoded_full_url]

Usa S.<name> para definir Intent Extras. Este extra en particular es retrocompatible. Chrome quita browser_fallback_url para que la app de destino no vea este valor.

Chrome no iniciará una aplicación externa en los siguientes casos:

  • No se puede resolver el intent. En otras palabras, ninguna app puede controlar el intent.
  • Un temporizador de JavaScript intentó abrir una aplicación sin un gesto del usuario.

Ejemplos

Este es un intent que inicia la app de escáner de códigos de barras Zxing:

intent:  
   //scan/  
   #Intent;  
      package=com.google.zxing.client.android;  
      scheme=zxing;  
   end;

Para iniciar la app de escaneo de códigos de barras de Zxing, codifica tu href en el ancla:

  <a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end">
    Take a QR code
  </a>

Consulta el Manifiesto de Zxing de Android, que define el paquete y el host.

Cuando se especifica una URL de resguardo, la URL completa se ve de la siguiente manera:

   <a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">
    Take a QR code
  </a>

Ahora, la URL envía a los usuarios a zxing.org si no se puede encontrar la app, si JavaScript activa el vínculo sin el gesto del usuario o en otros casos en los que no se inicia una aplicación externa.

Consideraciones

Si invocas una actividad de Android con un intent que contiene elementos adicionales, también puedes incluir estos detalles.

Solo se pueden invocar actividades con el filtro de categorías, android.intent.category.BROWSABLE, con este método, ya que indica que la aplicación es segura para abrir desde el navegador.

Chrome no iniciará una app externa para un URI de intent determinado en los siguientes casos:

  • El URI de intent se redirecciona desde una URL escrita.
  • El URI de intent se inicia sin un gesto del usuario.