Android responder ao URL na intenção


152

Quero que minha intenção seja lançada quando o usuário acessar um determinado URL: por exemplo, o Android Market faz isso com http://market.android.com/ urls. o mesmo acontece com o youtube. Eu quero que os meus também façam isso.


8
Há uma ótima resposta para esta pergunta em stackoverflow.com/questions/2448213/…
— neu242

2
Existe uma resposta melhor para esta pergunta stackoverflow.com/questions/1609573/…
— rds

Respostas:


192

Eu fiz isso! Usando <intent-filter>. Coloque o seguinte no seu arquivo de manifesto:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:host="www.youtube.com" android:scheme="http" />
</intent-filter>

Isso funciona perfeitamente!


9
Isso não funciona para mim. Você pode dar um exemplo de link que abriria o aplicativo.
— Pascal Klein

7
Gostaria de reagir a "www.youtube.com", mas NÃO a "www.youtube.com/fr /" ... Alguma idéia de como posso fazer isso?
— Gilbou 28/10


1
Não tenho certeza de como isso está funcionando para o mundo inteiro. Apenas não funciona no chrome e sempre abre o link no navegador até você colocar o elemento "android: pathPrefix". De qualquer forma, a resposta não possui os valores de categoria mencionados na documentação. Se ainda não funcionar para alguém, consulte isso por favor: stackoverflow.com/a/21727055/2695276 PS: lutou durante dias por isso.
— Rajat Sharma

1
É importante saber que isso só funciona se você abrir o link fora de um navegador, a partir do app notas, ou uma mensagem de WhatsApp, ele está trabalhando em pirulito
— D4rWiNS

10

Pode ser necessário adicionar permutações diferentes ao seu filtro de intenção para que ele funcione em diferentes casos (http / https / ect).

Por exemplo, tive que fazer o seguinte para um aplicativo que seria aberto quando o usuário abrisse um link para os formulários do Google Drive, www.docs.google.com/forms

Observe que o prefixo do caminho é opcional.

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="http"
                android:host="docs.google.com"
                android:pathPrefix="/forms"/>
            <data
                android:scheme="http"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="docs.google.com"
                android:pathPrefix="/forms" />
        </intent-filter>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.