Alguém pode me orientar sobre como iniciar meu aplicativo Android a partir do navegador Android?
fonte
Alguém pode me orientar sobre como iniciar meu aplicativo Android a partir do navegador Android?
Use um <intent-filter>
com um <data>
elemento Por exemplo, para lidar com todos os links para twitter.com, você deve colocar isso dentro do seu <activity>
no seu AndroidManifest.xml
:
<intent-filter>
<data android:scheme="http" android:host="twitter.com"/>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Em seguida, quando o usuário clicar em um link para o Twitter no navegador, será perguntado qual aplicativo usar para concluir a ação: o navegador ou seu aplicativo.
Obviamente, se você deseja fornecer uma forte integração entre seu site e seu aplicativo, pode definir seu próprio esquema:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Em seu aplicativo da web, você pode colocar links como:
<a href="my.special.scheme://other/parameters/here">
E quando o usuário clicar nele, seu aplicativo será iniciado automaticamente (porque provavelmente será o único que pode lidar com o my.special.scheme://
tipo de uris). A única desvantagem disso é que, se o usuário não tiver o aplicativo instalado, eles receberão um erro grave. E não tenho certeza de que haja alguma maneira de verificar.
Editar: para responder sua pergunta, você pode usar o getIntent().getData()
que retorna um Uri
objeto. Você pode usar Uri.*
métodos para extrair os dados necessários. Por exemplo, digamos que o usuário clicou em um link para http://twitter.com/status/1234
:
Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"
Você pode fazer o que precede em qualquer lugar do seu computador Activity
, mas provavelmente desejará fazê-lo onCreate()
. Você também pode usar params.size()
para obter o número de segmentos de caminho no Uri
. Procure no javadoc ou no site do desenvolvedor do Android outros Uri
métodos que você pode usar para extrair partes específicas.
android:exported="true"
aoActivity
manifesto deles . Verifique esta resposta stackoverflow.com/a/13044911/1276636Todas as respostas acima não funcionaram para mim
CHROME
em 28 de janeiro de 2014meu aplicativo foi iniciado corretamente a partir de http://example.com/someresource/ links de aplicativos como hangouts, gmail etc., mas não no navegador Chrome.
para resolver isso, para que seja iniciado corretamente a partir do CHROME, você deve definir um filtro de intenção como este
observe o
pathPrefix
elementoseu aplicativo agora será exibido dentro do seletor de atividades sempre que o usuário solicitar http://example.com/someresource/ padrão no navegador Chrome clicando em um link dos resultados de pesquisa do Google ou em qualquer outro site
fonte
Por favor, veja meu comentário aqui: Faça um link no navegador Android iniciar meu aplicativo?
Nós desencorajamos fortemente as pessoas a usarem seus próprios esquemas, a menos que estejam definindo um novo esquema de internet em todo o mundo.
fonte
No meu caso, tive que definir duas categorias para o
<intent-filter>
e funcionou:fonte
Por exemplo, você tem as seguintes coisas:
Então você precisa fazer o seguinte:
1) Adicione um filtro de intenção à sua atividade (pode ser qualquer atividade que você deseja. Para obter mais informações, consulte a documentação ).
2) Crie um arquivo HTML para testar o link ou use esses métodos.
3) Use o Chrome móvel para testar
4) é isso.
E não é necessário publicar o aplicativo no mercado para testar links diretos =)
Além disso, para obter mais informações, consulte a documentação e a apresentação útil .
fonte
Também deve ser
<category android:name="android.intent.category.BROWSABLE"/>
adicionado ao filtro de intenção para tornar a atividade reconhecida corretamente no link.fonte
O link a seguir fornece informações sobre como iniciar o aplicativo (se instalado) diretamente do navegador. Caso contrário, ele abrirá diretamente o aplicativo na Play Store para que o usuário possa fazer o download sem problemas.
https://developer.chrome.com/multidevice/android/intents
fonte
Observe que se seu ícone desaparecer do iniciador de Android quando você implementa esse recurso, é necessário dividir o filtro de intenção.
fonte
Sim, o Chrome pesquisa em vez de procurar um esquema. Se você deseja iniciar seu aplicativo por meio do esquema de URI, use este utilitário legal App na Play Store. Ele salvou meu dia :) https://play.google.com/store/apps/details?id=com.naosim.urlschemesender
fonte
Xamarin porto de Felix resposta
No seu
MainActivity
, adicione este ( docs: Android.App.IntentFilterAttribute Class ):O Xamarin adicionará o seguinte no
AndroidManifest.xml
para você:E para obter parâmetros ( eu testei no OnCreate of MainActivity ):
Até onde eu sei, acima pode ser adicionado em qualquer atividade, não apenas na MainActivity
Notas:
OnCreate
evento deMainLauncher Activity
será acionado novamente.<a href="my.special.scheme://host/arg1/arg2">
acima do último valor do snippet de código será:Atualização: se o Android criar uma nova instância do seu aplicativo, você deverá adicionar
android:launchMode="singleTask"
também.fonte
A abordagem de Felix para lidar com links diretos é a abordagem típica para lidar com links diretos. Eu também sugeriria verificar esta biblioteca para lidar com o roteamento e análise de seus links diretos:
https://github.com/airbnb/DeepLinkDispatch
Você pode usar anotações para registrar sua Atividade para um URI de link direto específico, e ele extrairá os parâmetros para você sem ter que executar o procedimento usual de obter os segmentos do caminho, combiná-lo etc. Você pode simplesmente fazer anotações e atividades como esta :
fonte
Ei, eu tenho a solução. Eu não defini a categoria como "Padrão". Também estava usando a atividade Main para a intenção Data. Agora estou usando uma atividade diferente para os dados de intenção. Obrigado pela ajuda. :)
fonte
Você precisa adicionar um pseudo-nome de host ao aplicativo CALLBACK_URL ': //' não faz sentido como um URL e não pode ser analisado.
fonte
example.php:
fonte
Veja a resposta @JRuns aqui . A idéia é criar html com seu esquema personalizado e enviá-lo para algum lugar. Então, se você clicar no seu link personalizado no seu arquivo html, você será redirecionado para o seu aplicativo. Eu usei este artigo para o Android. Mas não se esqueça de definir o
Name = "MyApp.Mobile.Droid.MainActivity"
atributo de nome completo para sua atividade de destino.fonte
A partir de 15/06/2019
o que fiz foi incluir todas as quatro possibilidades para abrir o URL.
ou seja, com
http
/https
e 2 comwww
no prefixo e 2 semwww
e, usando isso, meu aplicativo é iniciado automaticamente agora sem me pedir para escolher um navegador e outra opção.
fonte