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, incorpórala a una página para que el usuario pueda elegir iniciar la app. Esto brinda flexibilidad sobre cómo y cuándo se inician las apps, lo que significa que puedes pasarle información con Elementos adicionales de intent.

La sintaxis básica para 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 de 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 extras de intents. 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ódigo de barras de Zxing:

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

Para iniciar la app de escáner de código 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 gestos del usuario o en otros casos en los que no iniciemos 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ía android.intent.category.BROWSABLE con este método, ya que indica que es seguro abrir la aplicación 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 gestos del usuario.