Atalhos de aplicativos

A versão Android 7.1.1 permite que os desenvolvedores definam atalhos específicos de ação em seus aplicativos que podem ser exibidos em um iniciador. Esses atalhos de aplicativos permitem que os usuários iniciem rapidamente tarefas comuns ou recomendadas em um aplicativo.

Cada atalho faz referência a um intent que inicia uma ação específica no aplicativo quando os usuários selecionam o atalho. Exemplos de ações que você pode expressar como atalhos de aplicativos incluem:

  • Navegando os usuários para um local específico em um aplicativo de mapeamento
  • Enviando mensagens para um amigo em um aplicativo de comunicação
  • Reproduzindo o próximo episódio de um programa de TV em um aplicativo de mídia
  • Carregando o último ponto de salvamento em um aplicativo de jogos

Exemplos e fonte

Você pode encontrar a implementação principal desse recurso nos seguintes arquivos:

frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutPackage.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutUser.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutLauncher.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutParser.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutService.java
frameworks/base/services/core/java/com/android/server/pm/LauncherAppsService.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutPackageItem.java
frameworks/base/core/java/com/android/server/backup/ShortcutBackupHelper.java
frameworks/base/core/java/android/content/pm/ShortcutManager.java
frameworks/base/core/java/android/content/pm/ShortcutServiceInternal.java
frameworks/base/core/java/android/content/pm/ShortcutInfo.java
frameworks/base/core/java/android/content/pm/LauncherApps.java

Com os seguintes arquivos fornecendo recursos de suporte (chamados de APIs ocultas em ShortcutManager.java ):

packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java

E, por exemplo, o Android Open Source Project Launcher versão 3 suporta atalhos:

packages/apps/Launcher3/

Por fim, consulte os seguintes arquivos para Javadoc público.

frameworks/base/core/java/android/content/pm/ShortcutManager.java
frameworks/base/core/java/android/content/pm/ShortcutInfo.java
frameworks/base/core/java/android/content/pm/LauncherApps.java

Implementação

O AOSP Launcher3 já suporta atalhos. Nos casos em que um parceiro possui seu próprio iniciador, esse iniciador também deve oferecer suporte a atalhos.

  • Quando o usuário executa um determinado gesto (por exemplo, toque longo) em um ícone de aplicativo, o iniciador deve mostrar os atalhos dinâmicos e manifestos associados a cada ícone de atividade do iniciador.
    A ordem de classificação dos atalhos é definida no Javadoc do ShorctutManager na seção "Ordem de exibição dos atalhos". Por exemplo, mostre primeiro os atalhos do manifesto e depois os atalhos dinâmicos. Os atalhos são classificados por classificação em ordem crescente dentro de cada grupo.
  • O usuário deve ser capaz de arrastar cada atalho dinâmico/manifesto e "fixá-lo" na tela inicial.
  • Os atalhos fixados devem ser copiados e restaurados. (Consulte o javadoc do ShortcutManager para obter detalhes)
  • Fazer uma "resposta em linha" na notificação deve chamar internamente ShortcutManager.onApplicationActive.

Além disso, alguns aplicativos do Google Mobile Services (GMS) têm atalhos. O iniciador OEM deve mostrar atalhos para eles e, idealmente, oferecer suporte a " fixação " (ou criação de um ícone de atalho) também.

Consulte a fonte do Launcher3 para obter detalhes sobre como interagir com a estrutura para as operações acima.

Validação

Use os seguintes testes do Android Compatibility Test Suite (CTS) para garantir que sua versão do recurso (ShortcutManager e LauncherApps) funcione conforme o esperado:

cts/tests/tests/shortcutmanager/
cts/hostsidetests/shortcuts/

E encontre os testes de unidade para a implementação do AOSP aqui:

frameworks/base/services/tests/servicestests/

Que inclui:

src/com/android/server/pm/ShortcutManagerTest*.java

Você também pode empregar o teste CTS Verifier para gerenciador de atalhos:

cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/ShortcutThrottlingResetActivity.java