App-Verknüpfungen

Mit der Version Android 7.1.1 können Entwickler aktionsspezifische Verknüpfungen in ihren Apps definieren, die in einem Launcher angezeigt werden können. Mit diesen App-Verknüpfungen können Benutzer schnell allgemeine oder empfohlene Aufgaben innerhalb einer App starten.

Jede Verknüpfung verweist auf eine Absicht, die eine bestimmte Aktion in der App startet, wenn Benutzer die Verknüpfung auswählen. Beispiele für Aktionen, die Sie als App-Verknüpfungen ausdrücken können, sind:

  • Navigieren von Benutzern zu einem bestimmten Ort in einer Karten-App
  • Senden von Nachrichten an einen Freund in einer Kommunikations-App
  • Spielen Sie die nächste Folge einer TV-Sendung in einer Medien-App ab
  • Laden des letzten Speicherpunkts in einer Gaming-App

Beispiele und Quelle

Die primäre Implementierung dieser Funktion finden Sie in den folgenden Dateien:

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

Mit den folgenden Dateien, die unterstützende Funktionen bereitstellen (in ShortcutManager.java als versteckte APIs bezeichnet):

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

Und zum Beispiel unterstützt der Android Open Source Project Launcher Version 3 Verknüpfungen:

packages/apps/Launcher3/

Sehen Sie sich schließlich die folgenden Dateien für öffentliches Javadoc an.

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

Implementierung

Der AOSP Launcher3 unterstützt bereits Verknüpfungen. In Fällen, in denen ein Partner über einen eigenen Launcher verfügt, sollte dieser Launcher auch Verknüpfungen unterstützen.

  • Wenn der Benutzer eine bestimmte Geste (z. B. langes Drücken) auf ein App-Symbol ausführt, sollte der Launcher die dynamischen und manifesten Verknüpfungen anzeigen, die jedem Launcher-Aktivitätssymbol zugeordnet sind.
    Die Sortierreihenfolge der Verknüpfungen wird im ShorctutManager Javadoc im Abschnitt „Anzeigereihenfolge der Verknüpfungen“ definiert. Zeigen Sie beispielsweise zuerst die Manifest-Verknüpfungen und dann die dynamischen Verknüpfungen an. Die Verknüpfungen sind innerhalb jeder Gruppe nach Rang in aufsteigender Reihenfolge sortiert.
  • Der Benutzer sollte in der Lage sein, jede dynamische/manifestierte Verknüpfung zu ziehen und an den Startbildschirm anzuheften.
  • Angeheftete Verknüpfungen sollten gesichert und wiederhergestellt werden. (Weitere Informationen finden Sie im Javadoc von ShortcutManager.)
  • Das Ausführen einer „Inline-Antwort“ auf die Benachrichtigung sollte intern ShortcutManager.onApplicationActive aufrufen.

Darüber hinaus verfügen einige Google Mobile Services (GMS)-Apps über Verknüpfungen. Der OEM-Launcher sollte dafür Verknüpfungen anzeigen und idealerweise auch das Anheften (oder das Erstellen eines Verknüpfungssymbols) unterstützen.

Weitere Informationen zur Interaktion mit dem Framework für die oben genannten Vorgänge finden Sie in der Launcher3-Quelle.

Validierung

Verwenden Sie die folgenden CTS-Tests (Android Compatibility Test Suite), um sicherzustellen, dass Ihre Version der Funktion (ShortcutManager und LauncherApps) wie vorgesehen funktioniert:

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

Und die Unit-Tests für die AOSP-Implementierung finden Sie hier:

frameworks/base/services/tests/servicestests/

Welches beinhaltet:

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

Sie können auch den CTS-Verifier-Test für den Shortcut-Manager verwenden:

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