É possível criar um link como:
<a href="anton://useful_info_for_anton_app">click me!</a>
fazer com que meu aplicativo Anton seja iniciado?
Sei que isso funciona para o aplicativo Android Market com o protocolo de mercado, mas algo semelhante pode ser feito com outros aplicativos?
Aqui está um exemplo de um link que iniciará o Android Market:
<a href="market://search?q=pname:com.nytimes.android">click me!</a>
Atualização:
A resposta que aceitei, fornecida por eldarerathis, funciona muito bem, mas só quero mencionar que tive alguns problemas com a ordem dos subelementos da <intent-filter>
tag. Sugiro que você faça outro <intent-filter>
com os novos subelementos dessa tag para evitar os problemas que tive. Por exemplo, minha AndroidManifest.xml
aparência é assim:
<activity android:name=".AntonWorld"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<data android:scheme="anton" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Respostas:
Eu acho que você vai querer olhar para o
<intent-filter>
elemento do seu arquivo Mainfest. Especificamente, dê uma olhada na documentação para o<data>
subelemento.Basicamente, o que você precisa fazer é definir seu próprio esquema. Algo ao longo das linhas de:
Em seguida, você poderá iniciar seu aplicativo com links que começam com o
anton:
esquema de URI.fonte
Por favor, NÃO use seu próprio esquema personalizado assim !!! Os esquemas de URI são um espaço de nomes global da rede . Você possui o esquema "anton:" em todo o mundo? Não? Então não o use.
Uma opção é ter um site e ter um filtro de intenção para um URI específico nesse site. Por exemplo, é isso que o Market faz para interceptar URIs em seu site:
Como alternativa, existe o esquema "intenção:". Isso permite que você descreva praticamente qualquer Intenção como um URI, que o navegador tentará iniciar quando clicado. Para criar esse esquema, a melhor maneira é escrever o código para construir o Intent que você deseja iniciar e, em seguida, imprimir o resultado de intent.toUri (Intent.URI_INTENT_SCHEME).
Você pode usar uma ação com essa intenção para encontrar qualquer atividade que suporte essa ação. O navegador adicionará automaticamente a categoria NAVEGÁVEL à intenção antes de iniciá-la, por motivos de segurança; também removerá qualquer componente explícito que você forneceu pelo mesmo motivo.
A melhor maneira de usar isso, se você deseja garantir que ele ative apenas seu aplicativo, é com sua própria ação no escopo e usando Intent.setPackage () para dizer que o Intent corresponderá apenas ao seu pacote de aplicativos.
Trade-offs entre os dois:
Os URLs http exigem que você tenha um domínio que você possui. O usuário sempre terá a opção de mostrar o URI no navegador. Possui propriedades de reserva muito agradáveis, nas quais, se o aplicativo não estiver instalado, eles simplesmente chegarão ao seu site.
URIs de intenção exigem que seu aplicativo já esteja instalado e apenas em telefones Android. Isso permite quase qualquer intenção (mas sempre inclui a categoria BROWSABLE e não suporta componentes explícitos). Eles permitem que você direcione o lançamento apenas para seu aplicativo, sem que o usuário tenha a opção de acessar o navegador ou qualquer outro aplicativo.
fonte
market://
ligações :)Peço desculpas por me promover, mas tenho um plugin jQuery para iniciar aplicativos nativos a partir de links da web https://github.com/eusonlito/jquery.applink
Você pode usá-lo facilmente:
fonte
Eu também enfrentei esse problema e vi muitas páginas absurdas. Aprendi que, para tornar seu aplicativo navegável, altere a ordem dos elementos XML, isto é:
Isso funcionou para mim e pode ajudá-lo.
fonte
Aqui está a minha receita:
Crie um HTML estático que redirecione para o URL do aplicativo solicitado, coloque essa página na web.
Dessa forma, os links que você compartilha são links "reais" no que diz respeito ao Android (eles serão "clicáveis").
Você 'compartilha' um link HTTP comum, www.your.server.com/foo/bar.html Este URL retorna um HTML simples de 8 linhas que redireciona para o URI do seu aplicativo (window.location = "blah: // kuku") ( observe que 'blah' não precisa mais ser HTTP ou HTTPS).
Depois de instalar e executar, você pode aumentar o HTML com todos os recursos sofisticados, conforme sugerido acima.
Isso funciona com o navegador embutido, Opera e Firefox (não testou nenhum outro navegador). O Firefox pergunta 'Este link precisa ser aberto com um aplicativo' (ok, cancelar). Outros navegadores aparentemente não se preocupam tanto com segurança, eles apenas abrem o aplicativo, sem fazer perguntas.
fonte
<a href="iamnearby://register_activate">Activate</a>
Depois de configurar o esquema de URLs de intenção e personalizado para seu aplicativo, esse código javascript na parte superior de uma página de recebimento funcionará para mim no iOS e no Android:
Isso foi testado apenas no navegador Android. Não tenho certeza sobre o Firefox ou Opera. A chave é que, apesar de o navegador Android não lançar uma boa exceção para você
window.open(custom_url, '_blank')
, ele falhará e retornará, onull
que você poderá testar posteriormente.Atualização: use
store_loc = "https://play.google.com/store/apps/details?id=com.raditaz";
para vincular ao Google Play no Android.fonte
Você pode considerar uma biblioteca para lidar com o link direto para o seu aplicativo:
https://github.com/airbnb/DeepLinkDispatch
Você pode adicionar o filtro de intenção a uma Atividade anotada, como as pessoas sugeridas acima. Ele manipulará o roteamento e a análise de parâmetros para todos os seus links diretos. Por exemplo, sua MainActivity pode ter algo parecido com isto:
Ele também pode manipular parâmetros de consulta também.
fonte
Tente meu truque simples:
e meu link html:
ou você pode fazer <a href = "classRegister: verdadeiro "> <- valor "true" para filename class
no entanto, este script funciona para o link mailto :)
fonte
JavascriptInterface
com a solução alternativa, esta é a solução correta se você precisar oferecer suporte ao 2.3, onde o JavascriptInterface está com erros.Este método não chama a caixa de diálogo de desambiguação solicitando que você abra seu aplicativo ou um navegador.
Se você registrar o seguinte em seu manifesto
e clique neste URL em um email no seu telefone, por exemplo
o android tentará encontrar um aplicativo com o pacote com.myApp que responda à intenção da sua galeria e tenha um esquema myApp . Caso contrário, você será levado à loja, procurando por com.myApp , que deve ser seu aplicativo.
fonte