Intents do Android com o Chrome

É possível iniciar apps diretamente de uma página da Web em um dispositivo com uma intent do Android. Você pode implementar um gesto do usuário para iniciar o app com um esquema personalizado ou usar a sintaxe intent:.

Crie uma âncora de intent e incorpore-a a uma página para que o usuário possa optar por iniciar o app. Isso permite flexibilidade em como e quando os apps são iniciados, o que significa que você pode transmitir informações para o app com Intent Extras.

A sintaxe básica de um URI baseado em intent é a seguinte:

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

Consulte o código-fonte do Android para analisar os detalhes.

Quando uma intent não é resolvida ou um aplicativo externo não é iniciado, o usuário pode ser redirecionado para o URL substituto. Você pode especificar um URL substituto com uma intent extra:

S.browser_fallback_url=[encoded_full_url]

Use S.<name> para definir os extras de intent. Esse extra específico é compatível com versões anteriores. O Chrome remove browser_fallback_url para que o app de destino não veja esse valor.

O Google Chrome não inicia um aplicativo externo nos seguintes casos:

  • Não foi possível resolver a intent. Em outras palavras, nenhum app pode processar a intent.
  • Um timer JavaScript tentou abrir um aplicativo sem um gesto do usuário.

Exemplos

Confira uma intent que inicia o app leitor de código de barras Zxing:

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

Para iniciar o app leitor de código de barras do Zxing, codifique seu href na âncora:

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

Consulte o Manifesto Zxing do Android, que define o pacote e o host.

Quando um URL substituto é especificado, o URL completo fica assim:

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

Agora, o URL vai direcionar os usuários para zxing.org se o app não puder ser encontrado, o link será acionado pelo JavaScript sem o gesto do usuário ou outros casos em que não iniciarmos um aplicativo externo.

considerações

Se você invocar uma atividade do Android com uma intent que contenha Extras, também será possível incluir esses detalhes.

Somente atividades com o filtro de categoria android.intent.category.BROWSABLE podem ser invocadas usando esse método, porque ele indica que o aplicativo é seguro para ser aberto no navegador.

O Chrome não vai iniciar um app externo para um determinado URI de intent se:

  • O URI da intent é redirecionado de um URL digitado.
  • O URI da intent é iniciado sem um gesto do usuário.