crie Links profundos para conteúdo de App

quando um link clicado ou pedido programático invoca uma intenção URI web, o sistema Android tenta cada uma das seguintes ações, em ordem sequencial, até que o pedido seja bem sucedido.:

  1. abra o aplicativo preferido do usuário que pode lidar com o URI, se um for designado.
  2. abra o único aplicativo disponível que pode lidar com o URI.
  3. permite ao utilizador seleccionar uma aplicação de uma janela.

siga os passos abaixo para criar e testar ligações ao seu conteúdo. Você também pode usar o Assistente de Links do aplicativo no Android Studio para adicionar Links do aplicativo Android.

adicione filtros de intenção para ligações recebidas

para criar uma ligação ao conteúdo do seu aplicativo, adicione um filtro de intenção que contenha estes elementos e valores de atributos no seu manifesto:

<action>especifique a acção de intençãoACTION_VIEWpara que o filtro de intenção possa ser atingido a partir da pesquisa no Google.<data>adicione uma ou mais etiquetas<data>, cada uma das quais representa um formato URI que resolve a atividade. No mínimo, a etiqueta<data>deve incluir o atributoandroid:scheme.

você pode adicionar mais atributos para aperfeiçoar ainda mais o tipo de URI que a atividade aceita. Por exemplo, você pode ter várias atividades que aceitam URIs similares, mas que diferem simplesmente com base no nome do caminho. Neste caso, utilize o atributo android:path ou as suas variantes pathPattern ou pathPrefix para diferenciar a actividade que o sistema deve abrir para diferentes vias URI.

<category>incluem a categoriaBROWSABLE. É necessário para que o filtro de intenção seja acessível a partir de um webbrowser. Sem ele, clicar em um link em um navegador não pode resolver para o seu aplicativo.

também incluem a categoria DEFAULT.Isto permite que o seu aplicativo para responder a intentos implícitos. Sem isso, a atividade pode ser iniciada somente se a intenção especifica o nome do componente do aplicativo.

o seguinte excerto XML mostra como poderá indicar um filtro de intenção no seu manifesto para ligações profundas. Os URIs "example://gizmos" e"http://www.example.com/gizmos" resolvem ambos esta actividade.

<activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_view_http_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos" --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> </intent-filter> <intent-filter android:label="@string/filter_view_example_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos" --> <data android:scheme="example" android:host="gizmos" /> </intent-filter></activity>

Notice that the two intent filters only differed by the <data> element.Embora seja possível incluir vários <data> elementos no mesmo filtro,é importante que você crie filtros separados, quando sua intenção for declarar uniqueURLs (como uma combinação específica de scheme e host), becausemultiple <data> elementos na mesma intenção de filtro, na verdade, são mescladas togetherto conta de todas as variações do conjunto de atributos. Por exemplo, considere o seguinte::

<intent-filter> ... <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="app" android:host="open.my.app" /></intent-filter>

pode parecer como se isto suportasse apenas https://www.example.com eapp://open.my.app. No entanto, ele realmente suporta esses dois, mais estes:app://www.example.com e https://open.my.app.

uma vez que tenha adicionado filtros de intenção com URIs para conteúdo de actividade ao seu appmanifest, o Android é capaz de encaminhar qualquer Intentque tenha URIs correspondentes ao seu aplicativo em tempo de execução.

para saber mais sobre a definição de filtros de intenção, consulte Permitir que outras aplicações iniciem a sua actividade.

leia os dados dos intentos de entrada

uma vez que o sistema inicia a sua actividade através de um filtro de intenção, você pode usar os dados fornecidos pelo Intent para determinar o que você precisa renderizar. Chame os métodos getData() egetAction() para recuperar os dados e a ação associados com a entrada Intent. Você cancela estes métodos a qualquer momento durante o ciclo de vida da atividade, mas geralmente deve fazê-lo durante as chamadas iniciais, tais como onCreate() ouonStart().

Aqui está um trecho de código que mostra como recuperar dados de umIntent:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) val action: String? = intent?.action val data: Uri? = intent?.data}

Java

@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData();}

Siga estas práticas recomendadas para melhorar a experiência do usuário:

  • O deep link deve levar o usuário diretamente ao conteúdo,sem quaisquer avisos, páginas intersticiais, ou inícios de sessão. Certifique-se de que os usuários podem ver o conteúdo do aplicativo, mesmo que eles nunca abriram anteriormente a aplicação.Não há problema em alertar os usuários sobre as interações subsequentes ou quando eles abrem o aplicativo a partir do Lançador.
  • Siga a orientação de projecto descrita na navegação com as costas e para cima de modo a que a sua aplicação corresponda às expectativas dos utilizadores para a navegação para trás depois de entrarem na sua aplicação através de uma ligação profunda.

teste as suas ligações profundas

pode usar a Ferramenta de depurador Android com o Gestor de actividades (am) para testar se o filtro de intenções que indicou para a resolução de ligações profundas com a actividade correcta da aplicação. Pode executar o comando adb contra um dispositivo ou emulador.

a sintaxe geral para testar um filtro de intenção URI com adb é:

$ adb shell am start -W -a android.intent.action.VIEW -d <URI> <PACKAGE>

por exemplo, o comando abaixo tenta visualizar uma atividade app alvo que está associada com o URI especificado.

$ adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android

a declaração manifesta e o manipulador de intenções acima definidos definem a ligação entre o seu aplicativo e um site e o que fazer com as ligações recebidas. No entanto, para que o sistema trate o seu aplicativo como o manipulador padrão para um conjunto de URIs, você também deve solicitar que o sistema verifique esta conexão. A próxima lição explica como implementar esta verificação.

Deixe uma resposta

O seu endereço de email não será publicado.

Previous post Os Republicanos estão agora a conceder os seus valores fundamentais
Next post Croup & Ashma-ReMed Natural Medicine Clinic