A versão do Android 7.1.1 permite que os desenvolvedores definam atalhos específicos de ação nos apps que podem ser exibidos em uma tela de início. Esses atalhos de app permitem que os usuários iniciem rapidamente tarefas comuns ou recomendadas em um app.
Cada atalho faz referência a uma intent que inicia uma ação específica no app quando os usuários selecionam o atalho. Exemplos de ações que podem ser expressas como atalhos de apps incluem:
- Guiar os usuários até um determinado local em um app de mapas
- Enviar mensagens para um amigo em um app de comunicação
- Assistir o próximo episódio de um programa de TV em um app de mídia
- Como carregar o último ponto salvo em um app de jogo
Exemplos e origem
A implementação principal desse recurso está 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 que oferecem suporte a recursos (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
Por exemplo, o Android Open Source Project Launcher versão 3 oferece suporte a atalhos:
packages/apps/Launcher3/
Por fim, consulte os arquivos a seguir para conferir o 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á oferece suporte a atalhos. Nos casos em que um parceiro tem a própria tela de início, ela também precisa oferecer suporte a atalhos.
- Quando o usuário realiza um determinado gesto (por exemplo, tocar e pressionar) em um ícone de app,
o iniciador precisa mostrar os atalhos dinâmicos e de manifesto associados a cada
ícone de atividade do iniciador.
A ordem de classificação de atalhos é definida no Javadoc do ShorctutManager na seção "Ordem de exibição de atalhos". Por exemplo, mostre os atalhos do manifesto primeiro e depois os atalhos dinâmicos. Os atalhos são classificados por classificação em ordem crescente em cada grupo. - O usuário precisa poder arrastar cada atalho dinâmico/de manifesto e "fixar" na tela inicial.
- Os atalhos fixados precisam ser salvos em backup e restaurados. Consulte o javadoc do ShortcutManager para mais detalhes.
- Fazer uma "resposta inline" em uma notificação precisa chamar internamente ShortcutManager.onApplicationActive.
Além disso, alguns apps do Google Mobile Services (GMS) têm atalhos. A tela de início do OEM precisa mostrar atalhos para eles e, de preferência, oferecer suporte a fixação (ou criação de um ícone de atalho).
Consulte a fonte do Launcher3 para saber como interagir com o framework para as operações acima.
Validação
Use os seguintes testes do Teste de compatibilidade do Android (CTS) para garantir que sua versão do recurso (ShortcutManager e LauncherApps) funcione como 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/
Isso inclui:
src/com/android/server/pm/ShortcutManagerTest*.java
Você também pode usar o teste do CTS Verifier para o gerenciador de atalhos:
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/ShortcutThrottlingResetActivity.java