page.title=Links de aplicativos page.image=images/cards/card-app-linking_2x.png page.keywords=applinking, deeplinks, intents @jd:body
O sistema de intenções do Android é um mecanismo flexível para possibilitar que aplicativos lidem com conteúdos e solicitações. Vários aplicativos podem declarar padrões de URI correspondentes em seus filtros de intenções. Quando um usuário clica em um link da web que não tem um manipulador de inicialização padrão, a plataforma pode exibir um diálogo para o usuário selecionar entre uma lista de aplicativos que declararam filtros de intenções correspondentes.
O Android M Developer Preview introduz suporte para links de aplicativos, que aprimora a manipulação de links existentes, permitindo que desenvolvedores de aplicativos associem um aplicativo a um domínio da web pertencente a eles. Quando os desenvolvedores criam esta associação, a plataforma pode automaticamente determinar o aplicativo padrão usado para lidar com um link da web particular e ignorar a solicitação aos usuários.
Os donos de sites da web devem declarar as associações aos aplicativos para estabelecer um link de aplicativo. O dono do site declara a relação com um aplicativo hospedando um arquivo JSON chamado {@code statements.json} no local bem conhecido no domínio:
http://<domain>:<optional port>/.well-known/statements.json
Observação: durante o período do M Developer Preview, o arquivo JSON é verificado por meio de protocolo http. Para o lançamento oficial da plataforma, o arquivo é verificado com o protocolo http criptografado.
Este arquivo JSON indica o aplicativo do Android que deve ser usado como o manipulador padrão para URLs neste domínio. Ele identifica o aplicativo com base nestes campos:
keytool -list -v -keystore my-release-key.keystore
A seguinte lista de arquivos exibe um exemplo de conteúdo e formato de um arquivo {@code statements.json}:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "<package name>", "sha256_cert_fingerprints": ["6C:EC:C5:0E:34:AE....EB:0C:9B"] } }]
Um aplicativo pode solicitar que a plataforma verifique automaticamente quaisquer links de aplicativo relacionados aos arquivos {@code statements.json} hospedados nos respectivos domínios da web que são definidos pelos nomes de host nos elementos de dados dos seus filtros de intenções. Para solicitar a verificação de link de aplicativo, adicione um atributo {@code android:autoVerify} a cada filtro de intenção desejado no manifesto, como exibido no seguinte fragmento de código do manifesto:
<activity ...> <intent-filter android:autoVerify="true"> <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="www.android.com" /> <data android:scheme="https" android:host="www.android.com" /> </intent-filter> </activity>
Quando o atributo {@code android:autoVerify} está presente em um manifesto do aplicativo, a plataforma tenta verificar os links do aplicativo quando o aplicativo é instalado. Se a plataforma não conseguir verificar os links do aplicativo, o aplicativo não será definido como o aplicativo preferencial para lidar com os links da web. Na próxima vez que um usuário tentar abrir um dos links, a plataforma voltará a apresentar ao usuário uma caixa de diálogo.
Observação: no teste, há chances de ocorrer um falso positivo se a verificação falhar, mas o usuário explicitamente permitiu que o aplicativo abrisse links sem solicitar, usando o aplicativo do sistema Settings (Configurações). Neste caso, nenhum diálogo é exibido e o link vai direto para o aplicativo, mas somente devido à configuração do usuário, e não porque a verificação foi bem-sucedida.
Os usuários podem alterar as configurações de link de aplicativo para que os URLs sejam tratados da maneira que preferirem. É possível revisar e gerenciar os links de aplicativo no aplicativo Settings (Configurações) do sistema, em Settings (Configurações) > Apps (Aplicativos) > App Info (Informações do aplicativo) > Open by default (Abrir por padrão).