O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Criar um link direto para um destino

No Android, um link direto é aquele que leva você diretamente a um destino específico em um app.

O componente de navegação permite criar dois tipos diferentes de links diretos: explícito e implícito.

Criar um link direto explícito

Um link direto explícito é uma instância única de um link direto que usa um PendingIntent para levar os usuários a um local específico no app. Você pode exibir um link direto explícito como parte de uma notificação, um atalho ou um widget do app, por exemplo.

Quando um usuário abre o app por meio de um link direto explícito, a pilha de retorno da tarefa é limpa e substituída pelo destino do link direto. Ao aninhar gráficos, o destino inicial de cada nível de aninhamento, ou seja, o destino inicial de cada elemento <navigation> na hierarquia, também é adicionado à pilha. Isso significa que quando um usuário pressiona o botão "Voltar" em um destino de link direto, ele navega pela pilha de navegação como se tivesse entrado no app a partir do ponto de entrada.

Você pode usar a classe NavDeepLinkBuilder para construir um PendingIntent, como mostrado no exemplo abaixo. Se o contexto fornecido não for um Activity, o construtor usará PackageManager.getLaunchIntentForPackage() como a atividade padrão para iniciar, se disponível.

Kotlin

    val pendingIntent = NavDeepLinkBuilder(context)
        .setGraph(R.navigation.nav_graph)
        .setDestination(R.id.android)
        .setArguments(args)
        .createPendingIntent()
    

Java

    PendingIntent pendingIntent = new NavDeepLinkBuilder(context)
        .setGraph(R.navigation.nav_graph)
        .setDestination(R.id.android)
        .setArguments(args)
        .createPendingIntent();
    

Se você já tiver um NavController, também poderá criar um link direto via NavController.createDeepLink().

Criar um link direto implícito

Um link direto implícito é um URI que se refere a um destino específico em um app. Um URI é invocado, por exemplo, quando um usuário clica em um link, e o Android pode abrir o app no destino correspondente.

Ao acionar um link direto implícito, o estado da pilha de retorno depende do Intent implícito ter sido iniciado com a sinalização Intent.FLAG_ACTIVITY_NEW_TASK:

  • Se a sinalização estiver configurada, a pilha de retorno da tarefa será limpa e substituída pelo destino do link direto. Assim como no caso do link direto explícito, ao aninhar gráficos, o destino inicial de cada nível de aninhamento, ou seja, o destino inicial de cada elemento <navigation> na hierarquia, também é adicionado à pilha. Isso significa que quando um usuário pressiona o botão "Voltar" em um destino de link direto, ele navega pela pilha de navegação como se tivesse entrado no app a partir do ponto de entrada.
  • Se a sinalização não estiver configurada, você permanecerá na pilha de tarefas do app anterior, em que o link direto implícito foi acionado. Nesse caso, o botão "Voltar" levará você de volta ao app anterior, enquanto o botão "Para cima" iniciará a tarefa do app no destino pai hierárquico no gráfico de navegação.

Você pode usar o Navigation Editor para criar um link direto implícito para um destino, da seguinte forma:

  1. Na guia Design do Navigation Editor, selecione o destino do link direto.
  2. Clique em + na seção Deep Links do painel Attributes.
  3. Na caixa de diálogo Add Deep Link exibida, insira um URI.

    Observe o seguinte:

    • Os URIs sem um esquema são considerados HTTP ou HTTPS. Por exemplo, www.google.com corresponde a http://www.google.com e https://www.google.com.
    • Marcadores na forma de {placeholder_name} correspondem a um ou mais caracteres. Por exemplo, http://www.example.com/users/{id} corresponde a http://www.example.com/users/4. O componente de navegação tenta analisar os valores dos marcadores nos tipos apropriados, combinando nomes dos marcadores aos argumentos definidos para o destino do link direto. Se não for definido nenhum argumento com o mesmo nome, um tipo String padrão será usado como valor do argumento.
    • Você pode usar o caractere curinga * para criar correspondência com 0 ou mais caracteres.
  4. Opcional: selecione Auto Verify para exigir que o Google verifique se você é o proprietário do URI. Para mais informações, consulte Verificar links de apps para Android.

  5. Clique em Add. Um ícone de link será exibido acima do destino selecionado para indicar que o destino tem um link direto.

  6. Clique na guia Text para alternar para a visualização XML. Um elemento <deepLink> aninhado foi adicionado ao destino:

    <deepLink app:uri="https://www.google.com" />
        

Para ativar o link direto implícito, você também precisa fazer adições ao arquivo manifest.xml do app. Adicione um único elemento <nav-graph> a uma atividade que aponta para um gráfico de navegação existente, como mostrado no exemplo abaixo:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myapplication">

        <application ... >

            <activity name=".MainActivity" ...>
                ...

                <nav-graph android:value="@navigation/nav_graph" />

                ...

            </activity>
        </application>
    </manifest>
    

Ao criar seu projeto, o componente de navegação substitui o elemento <nav-graph> por elementos gerados por <intent-filter> para corresponder a todos os links diretos no gráfico de navegação.

Outros recursos

Para saber mais sobre navegação, consulte os seguintes recursos.

Amostras

Codelabs

Vídeos