A versão 7.1.1 do Android permite que os desenvolvedores definam ações específicas atalhos nos aplicativos que podem ser exibidos em uma tela de início. Esses aplicativos atalhos permitem que os usuários iniciem rapidamente tarefas comuns ou recomendadas em um app.
Cada atalho referencia uma intent que inicia uma ação específica no app quando os usuários selecionarem o atalho. Exemplos de ações que você pode expressar como app atalhos incluem:
- Guiar os usuários a um local específico em um aplicativo de mapeamento
- 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
- Carregar o último ponto salvo em um app de jogo
Exemplos e origem
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 arquivos a seguir 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 é compatível atalhos:
packages/apps/Launcher3/
Por fim, consulte os arquivos a seguir para um 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 próprio inicializador, ele também deverá oferecer suporte a atalhos.
- Quando o usuário realiza um determinado gesto (por exemplo, tocar e manter pressionado) no ícone de um app,
o acesso rápido deve mostrar os atalhos dinâmicos e de manifesto associados a cada
ícone de atividade na tela de início.
A ordem de classificação dos atalhos é definida no Javadoc ShorctutManager dentro a "Ordem de exibição dos atalhos" nesta seção. Por exemplo, mostrar os atalhos do manifesto primeiro, depois os atalhos dinâmicos. Os atalhos são classificados pela classificação em ordem crescente dentro de cada grupo. - O usuário deve conseguir arrastar cada atalho dinâmico/manifesto e "fixar" para a tela inicial.
- É necessário fazer backup e restaurar os atalhos fixados. (Consulte a documentação do javadoc para mais detalhes)
- Usar uma "resposta inline" em Notificações deve chamar internamente AtalhoManager.onApplicationActive.
Além disso, alguns apps dos Serviços do Google Mobile (GMS) têm atalhos. O OEM a tela de início precisa mostrar atalhos e oferecer suporte à fixação (ou criando um ícone de atalho).
Consulte a fonte do Launcher3 para conferir detalhes sobre como interagir com o framework as operações acima.
Validação
Use os seguintes testes do Conjunto de teste de compatibilidade (CTS) do Android para garantir que versão do recurso (ShortcutsManager e LauncherApps) funcione conforme o esperado:
cts/tests/tests/shortcutmanager/ cts/hostsidetests/shortcuts/
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