Scorciatoie applicazioni

La versione Android 7.1.1 consente agli sviluppatori di definire scorciatoie specifiche per azioni nelle loro app che possono essere visualizzate in un launcher. Queste scorciatoie dell'app consentono agli utenti di avviare rapidamente attività comuni o consigliate all'interno di un'app.

Ogni scorciatoia fa riferimento a un intento che avvia un'azione specifica nell'app quando gli utenti selezionano la scorciatoia. Esempi di azioni che puoi esprimere come scorciatoie dell'app includono:

  • Navigazione degli utenti verso una posizione particolare in un'app di mappatura
  • Invio di messaggi a un amico in un'app di comunicazione
  • Riproduzione dell'episodio successivo di un programma TV in un'app multimediale
  • Caricamento dell'ultimo punto di salvataggio in un'app di gioco

Esempi e fonte

Puoi trovare l'implementazione principale di questa funzionalità nei seguenti file:

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

Con i seguenti file che forniscono funzionalità di supporto (chiamate API nascoste in ShortcutManager.java ):

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

E, ad esempio, la versione 3 di Android Open Source Project Launcher supporta le scorciatoie:

packages/apps/Launcher3/

Infine, vedere i seguenti file per Javadoc pubblico.

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

Implementazione

AOSP Launcher3 supporta già le scorciatoie. Nei casi in cui un partner dispone di un proprio launcher, anche tale launcher dovrebbe supportare le scorciatoie.

  • Quando l'utente esegue un determinato gesto (ad esempio una pressione prolungata) sull'icona di un'app, il launcher dovrebbe mostrare le scorciatoie dinamiche e manifest associate a ciascuna icona dell'attività del launcher.
    L'ordinamento delle scorciatoie è definito nel Javadoc ShorctutManager all'interno della sezione "Ordine di visualizzazione delle scorciatoie". Ad esempio, mostra prima le scorciatoie manifest, poi quelle dinamiche. Le scorciatoie sono ordinate per rango in ordine crescente all'interno di ciascun gruppo.
  • L'utente dovrebbe essere in grado di trascinare ciascun collegamento dinamico/manifesto e "bloccarlo" sulla schermata iniziale.
  • È necessario eseguire il backup e il ripristino dei collegamenti aggiunti. (Vedi il javadoc di ShortcutManager per i dettagli)
  • L'esecuzione di una "risposta in linea" su Notifica dovrebbe chiamare internamente ShortcutManager.onApplicationActive.

Inoltre, alcune app Google Mobile Services (GMS) dispongono di scorciatoie. Il launcher OEM dovrebbe mostrare scorciatoie per loro e idealmente supportare anche il " blocco " (o la creazione di un'icona di collegamento).

Vedi la fonte Launcher3 per i dettagli su come interagire con il framework per le operazioni di cui sopra.

Validazione

Utilizza i seguenti test Android Compatibility Test Suite (CTS) per assicurarti che la tua versione della funzionalità (ShortcutManager e LauncherApps) funzioni come previsto:

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

E trova gli unit test per l'implementazione AOSP qui:

frameworks/base/services/tests/servicestests/

Che include:

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

Puoi anche utilizzare il test CTS Verifier per la gestione dei collegamenti:

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