Intents do Android com o Chrome

É possível iniciar apps diretamente de uma página da Web em um dispositivo Android com uma Intent. É possível 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 a incorpore a uma página para que o usuário possa iniciar o app. Isso permite flexibilidade para como e quando os apps são iniciados, o que significa que você pode transmitir informações para o app com os 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 detalhes.

Quando uma intent não é resolvida ou um aplicativo externo não é iniciado, o usuário pode ser redirecionado para o URL alternativo. É possível especificar um URL substituto com um Intent extra:

S.browser_fallback_url=[encoded_full_url]

Use S.<name> para definir 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 Chrome não inicia um aplicativo externo nos seguintes casos:

  • A intent não pode ser resolvida. Em outras palavras, nenhum app pode processar a intent.
  • Um cronômetro JavaScript tentou abrir um aplicativo sem um gesto do usuário.

Exemplos

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

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

Para iniciar o app de leitura de código de barras Zxing, codifique o 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 do Android Zxing, que define o pacote e o host.

Quando um URL alternativo é 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 envia os usuários para zxing.org se o app não for encontrado, o link for acionado pelo JavaScript sem gesto do usuário ou outros casos em que não iniciamos um aplicativo externo.

Considerações

Se você invocar uma atividade Android com uma intent que contém 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, já que ele indica que é seguro abrir o aplicativo 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 gesto do usuário.