Atalhos de aplicativos

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

Cada atalho faz referência a uma intenção 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 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 jogo

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 tenha seu próprio lançador, esse lançador também deverá suportar atalhos.

  • Quando o usuário realiza um determinado gesto (por exemplo, toque longo) em um ícone de aplicativo, o inicializador deve mostrar os atalhos dinâmicos e manifestos associados a cada ícone de atividade do inicializador.
    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. (Veja o javadoc do ShortcutManager para detalhes)
  • Fazer uma "resposta embutida" na notificação deve chamar internamente ShortcutManager.onApplicationActive.

Além disso, alguns aplicativos do Google Mobile Services (GMS) possuem atalhos. O inicializador OEM deve mostrar atalhos para eles e, idealmente, suportar " 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 esperado:

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

E encontre os testes unitários 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