Mit Verknüpfungen können Sie Nutzern bestimmte Arten von Inhalten präsentieren, indem Sie ihnen helfen, schnell auf Teile Ihrer App zuzugreifen.
Wie Sie Inhalte mit Verknüpfungen bereitstellen, hängt von Ihrem Anwendungsfall und davon ab, ob der Kontext der Verknüpfung app- oder nutzergesteuert ist. Der Kontext einer statischen Verknüpfung ändert sich nicht, der Kontext einer dynamischen Verknüpfung ändert sich ständig. In beiden Fällen wird der Kontext jedoch von Ihrer App bestimmt. Wenn ein Nutzer auswählt, wie Ihre App Inhalte für ihn bereitstellt, z. B. über eine angepinnte Verknüpfung, wird der Kontext vom Nutzer definiert. In den folgenden Szenarien werden einige Anwendungsfälle für die einzelnen Arten von Verknüpfungen beschrieben:
- Statische Verknüpfungen eignen sich am besten für Apps, die während der gesamten Interaktion eines Nutzers mit der App über eine konsistente Struktur auf Inhalte verweisen. Da die meisten Launcher nur vier Verknüpfungen gleichzeitig anzeigen, sind statische Verknüpfungen nützlich, um eine Routineaufgabe auf konsistente Weise auszuführen, z. B. wenn der Nutzer seinen Kalender oder seine E-Mails auf bestimmte Weise aufrufen möchte.
- Dynamische Verknüpfungen werden für kontextbezogene Aktionen in Apps verwendet. Kontextsensitive Verknüpfungen sind auf die Aktionen zugeschnitten, die Nutzer in einer App ausführen. Wenn Sie beispielsweise ein Spiel entwickeln, in dem Nutzer beim Starten des Spiels mit dem aktuellen Level beginnen können, müssen Sie die Verknüpfung häufig aktualisieren. Mit einem dynamischen Shortcut können Sie den Shortcut jedes Mal aktualisieren, wenn der Nutzer ein Level abschließt.
- Angepinnte Verknüpfungen werden für bestimmte nutzergesteuerte Aktionen verwendet. Ein Nutzer möchte beispielsweise eine bestimmte Website an den Launcher anpinnen. Das ist von Vorteil, weil der Nutzer so eine benutzerdefinierte Aktion ausführen kann, z. B. in einem Schritt zur Website navigieren, und zwar schneller als mit einer Standardinstanz eines Browsers.
Statische Verknüpfungen erstellen
Statische Verknüpfungen enthalten Links zu allgemeinen Aktionen in Ihrer App. Diese Aktionen müssen während des gesamten Lebenszyklus der aktuellen Version Ihrer App gleich bleiben. Gute Optionen für statische Verknüpfungen sind das Aufrufen gesendeter Nachrichten, das Stellen eines Weckers und das Anzeigen der Trainingsaktivitäten eines Nutzers für den Tag.
So erstellen Sie eine statische Verknüpfung:
- Suchen Sie in der Datei
AndroidManifest.xmlIhrer App nach der Aktivität, deren Intent-Filter auf die Aktionandroid.intent.action.MAINund die Kategorieandroid.intent.category.LAUNCHERfestgelegt sind. Fügen Sie dieser Aktivität ein
<meta-data>-Element hinzu, das auf die Ressourcendatei verweist, in der die App-Verknüpfungen definiert sind:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application ... > <activity android:name="Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" /> </activity> </application> </manifest>Erstellen Sie eine neue Ressourcendatei mit dem Namen
res/xml/shortcuts.xml.Fügen Sie in der neuen Ressourcendatei ein
<shortcuts>-Stammelement hinzu, das eine Liste von<shortcut>-Elementen enthält. Fügen Sie in jedes<shortcut>-Element Informationen zu einer statischen Verknüpfung ein, einschließlich des Symbols, der Beschreibungslabels und der Intents, die in der App gestartet werden:<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:shortcutId="compose" android:enabled="true" android:icon="@drawable/compose_icon" android:shortcutShortLabel="@string/compose_shortcut_short_label1" android:shortcutLongLabel="@string/compose_shortcut_long_label1" android:shortcutDisabledMessage="@string/compose_disabled_message1"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.example.myapplication" android:targetClass="com.example.myapplication.Main" /> <!-- If your shortcut is associated with multiple intents, include them here. The last intent in the list determines what the user sees when they launch this shortcut. --> <categories android:name="android.shortcut.conversation" /> <capability-binding android:key="actions.intent.CREATE_MESSAGE" /> </shortcut> <!-- Specify more shortcuts here. --> </shortcuts>
Attributwerte anpassen
Die folgende Liste enthält Beschreibungen der verschiedenen Attribute in einer statischen Verknüpfung. Geben Sie einen Wert für android:shortcutId und android:shortcutShortLabel an. Alle anderen Werte sind optional.
android:shortcutIdEin Stringliteral, das die Verknüpfung darstellt, wenn ein
ShortcutManager-Objekt Vorgänge für sie ausführt.android:shortcutShortLabelEin prägnanter Ausdruck, der den Zweck der Verknüpfung beschreibt. Beschränken Sie diese Kurzbeschreibung nach Möglichkeit auf 10 Zeichen.
Weitere Informationen finden Sie unter
setShortLabel().android:shortcutLongLabelEin erweiterter Begriff, der den Zweck der Verknüpfung beschreibt. Wenn genügend Platz vorhanden ist, wird dieser Wert anstelle von
android:shortcutShortLabelim Launcher angezeigt. Beschränken Sie diese lange Beschreibung nach Möglichkeit auf 25 Zeichen.Weitere Informationen finden Sie unter
setLongLabel().android:shortcutDisabledMessageDie Nachricht, die in einem unterstützten Launcher angezeigt wird, wenn der Nutzer versucht, eine deaktivierte Verknüpfung zu starten. In der Nachricht muss dem Nutzer erklärt werden, warum die Verknüpfung deaktiviert ist. Der Wert dieses Attributs hat keine Auswirkungen, wenn
android:enabledgleichtrueist.android:enabledGibt an, ob der Nutzer über einen unterstützten Launcher mit der Verknüpfung interagieren kann. Der Standardwert von
android:enabledisttrue. Wenn Sie sie auffalsesetzen, geben Sie eineandroid:shortcutDisabledMessagean, in der Sie erklären, warum Sie die Verknüpfung deaktivieren. Wenn Sie der Meinung sind, dass Sie keine solche Nachricht angeben müssen, entfernen Sie die Verknüpfung vollständig aus der XML-Datei.android:iconDas Bitmap oder adaptive Symbol, das der Launcher verwendet, wenn er die Verknüpfung dem Nutzer anzeigt. Dieser Wert kann der Pfad zu einem Bild oder zur Ressourcendatei sein, die das Bild enthält. Verwenden Sie nach Möglichkeit adaptive Symbole, um die Leistung und Konsistenz zu verbessern.
Innere Elemente konfigurieren
Die XML-Datei, in der die statischen Verknüpfungen einer App aufgeführt sind, unterstützt die folgenden Elemente innerhalb jedes <shortcut>-Elements. Sie müssen für jede statische Verknüpfung, die Sie definieren, ein intent-Innenelement angeben.
intentDie Aktion, die das System startet, wenn der Nutzer die Verknüpfung auswählt. Für diese Intention muss ein Wert für das Attribut
android:actionangegeben werden.Sie können mehrere Intents für eine einzelne Verknüpfung angeben. Weitere Informationen finden Sie unter Mehrere Intents und Aktivitäten verwalten, Intent festlegen und in der
TaskStackBuilder-Klassenreferenz.categoriesBietet eine Gruppierung für die Arten von Aktionen, die durch die Verknüpfungen Ihrer App ausgeführt werden, z. B. das Erstellen neuer Chatnachrichten.
Eine Liste der unterstützten Shortcut-Kategorien finden Sie in der
ShortcutInfo-Klassenreferenz.capability-bindingDeklariert die mit dem Shortcut verknüpfte capability.
Im vorherigen Beispiel ist der Kurzbefehl mit einer Funktion verknüpft, die für
CREATE_MESSAGEdeklariert ist. Das ist ein integrierter Intent für App Actions. Mit dieser Capability-Bindung können Nutzer gesprochene Befehle mit Google Assistant verwenden, um einen Shortcut aufzurufen.
Dynamische Verknüpfungen erstellen
Dynamische Verknüpfungen enthalten Links zu bestimmten, kontextsensitiven Aktionen in Ihrer App. Diese Aktionen können sich zwischen den einzelnen Nutzungen Ihrer App und während der Ausführung Ihrer App ändern. Gute Anwendungsfälle für dynamische Verknüpfungen sind das Anrufen einer bestimmten Person, das Navigieren zu einem bestimmten Ort und das Laden eines Spiels vom letzten Speicherpunkt des Nutzers. Sie können auch dynamische Verknüpfungen verwenden, um eine Unterhaltung zu öffnen.
Die Jetpack-Bibliothek ShortcutManagerCompat ist eine Hilfsbibliothek für die ShortcutManager API, mit der Sie dynamische Verknüpfungen in Ihrer App verwalten können. Durch die Verwendung der ShortcutManagerCompat-Bibliothek wird Boilerplate-Code reduziert und dafür gesorgt, dass Ihre Verknüpfungen auf allen Android-Versionen konsistent funktionieren. Diese Bibliothek ist auch erforderlich, um dynamische Verknüpfungen zu senden, damit sie auf Google-Plattformen wie Assistant mit der Google Shortcuts Integration Library angezeigt werden können.
Mit der ShortcutManagerCompat API kann Ihre App die folgenden Vorgänge mit dynamischen Verknüpfungen ausführen:
- Push und Update:Verwenden Sie
pushDynamicShortcut(), um Ihre dynamischen Verknüpfungen zu veröffentlichen und zu aktualisieren. Wenn bereits dynamische oder angepinnte Verknüpfungen mit derselben ID vorhanden sind, werden alle veränderbaren Verknüpfungen aktualisiert. - Entfernen:Entfernen Sie eine Reihe dynamischer Verknüpfungen mit
removeDynamicShortcuts(). Entfernen Sie alle dynamischen Verknüpfungen mitremoveAllDynamicShortcuts().
Weitere Informationen zum Ausführen von Vorgängen für Verknüpfungen finden Sie unter Verknüpfungen verwalten und in der ShortcutManagerCompat-Referenz.
Hier ist ein Beispiel für das Erstellen einer dynamischen Verknüpfung und das Zuordnen zu Ihrer App:
val shortcut = ShortcutInfoCompat.Builder(context, "id1") .setShortLabel("Website") .setLongLabel("Open the website") .setIcon(IconCompat.createWithResource(context, R.drawable.icon_website)) .setIntent( Intent( Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/") ) ) .build() ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)
Google Shortcuts Integration Library hinzufügen
Die Google Shortcuts Integration Library ist eine optionale Jetpack-Bibliothek. Damit können Sie dynamische Verknüpfungen senden, die auf Android-Oberflächen wie dem Launcher und auf Google-Oberflächen angezeigt werden können. Mit dieser Bibliothek können Nutzer Ihre Verknüpfungen finden, um schnell auf bestimmte Inhalte zuzugreifen oder Aktionen in Ihrer App zu wiederholen.
Dynamische Verknüpfungen, die mit dieser Bibliothek bereitgestellt werden, unterliegen nicht den Verknüpfungsbeschränkungen, die pro Gerät erzwungen werden. So kann Ihre App jedes Mal eine Verknüpfung senden, wenn ein Nutzer eine zugehörige Aktion in Ihrer App ausführt. Wenn Sie häufig verwendete Verknüpfungen auf diese Weise senden, kann Google die Nutzungsmuster Ihrer Nutzer nachvollziehen und ihnen kontextbezogene Verknüpfungen vorschlagen.
Assistant kann beispielsweise anhand von Verknüpfungen, die von Ihrer Fitness-Tracking-App gesendet werden, erkennen, dass ein Nutzer normalerweise jeden Morgen läuft, und proaktiv die Verknüpfung „Lauf starten“ vorschlagen, wenn der Nutzer sein Smartphone morgens in die Hand nimmt.
Die Google Shortcuts Integration Library bietet selbst keine adressierbaren Funktionen. Wenn Sie diese Bibliothek Ihrer App hinzufügen, können Google-Plattformen die Verknüpfungen, die Ihre App mit ShortcutManagerCompat bereitstellt, nutzen.
Wenn Sie diese Bibliothek in Ihrer App verwenden möchten, fügen Sie Ihrer Datei app/build.gradle oder app/build.gradle.kts Abhängigkeiten für die Google Shortcuts Integration Library und ShortcutManagerCompat hinzu:
Kotlin
dependencies {
implementation("androidx.core:core:1.6.0")
implementation("androidx.core:core-google-shortcuts:1.0.0")
}
Groovy
dependencies {
implementation "androidx.core:core:1.6.0"
implementation 'androidx.core:core-google-shortcuts:1.0.0'
}
Nachdem Sie die Bibliotheksabhängigkeiten Ihrem Android-Projekt hinzugefügt haben, kann Ihre App die Methode pushDynamicShortcut() aus ShortcutManagerCompat verwenden, um dynamische Verknüpfungen zu pushen, die für die Anzeige im Launcher und auf teilnehmenden Google-Oberflächen infrage kommen.
Angepinnte Verknüpfungen erstellen
Unter Android 8.0 (API-Level 26) und höher können Sie angepinnte Verknüpfungen erstellen. Im Gegensatz zu statischen und dynamischen Verknüpfungen werden angepinnte Verknüpfungen in unterstützten Launchern als separate Symbole angezeigt. Abbildung 1 zeigt den Unterschied zwischen diesen beiden Arten von Tastenkombinationen.
So pinnen Sie mit Ihrer App eine Verknüpfung an einen unterstützten Launcher:
- Prüfen Sie mit
isRequestPinShortcutSupported(), ob der Standard-Launcher des Geräts das Anpinnen von Verknüpfungen in der App unterstützt. Erstellen Sie ein
ShortcutInfoCompat-Objekt, das eine ID, eine Absicht und ein kurzes Label für die Verknüpfung enthält. Wenn die Tastenkombination vorhanden ist, verwenden Sie die ID der vorhandenen Tastenkombination. Das System findet und pinnt automatisch alle anderen Informationen, die mit der Verknüpfung zusammenhängen.Pinnen Sie die Verknüpfung an den Launcher des Geräts, indem Sie
requestPinShortcut()aufrufen. Dabei können Sie einPendingIntent-Objekt übergeben, das Ihre App nur benachrichtigt, wenn das Anpinnen der Verknüpfung erfolgreich war.Nachdem eine Verknüpfung angepinnt wurde, kann Ihre App ihre Inhalte mit der Methode
updateShortcuts()aktualisieren. Weitere Informationen finden Sie unter Shortcuts aktualisieren.
Das folgende Code-Snippet zeigt, wie ein angepinnter Shortcut erstellt wird:
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { // Enable the existing shortcut with the ID "my-shortcut". val pinShortcutInfo = ShortcutInfoCompat.Builder(context, "my-shortcut") .setShortLabel("Website") .setIntent( Intent( Intent.ACTION_VIEW, Uri.parse("https://www.mysite.example.com/") ) ) .build() // Create the PendingIntent object only if your app needs to be notified // that the user let the shortcut be pinned. If the pinning operation fails, // your app isn't notified. Assume here that the app implements a method // called createShortcutResultIntent() that returns a broadcast intent. val pinnedShortcutCallbackIntent = ShortcutManagerCompat.createShortcutResultIntent(context, pinShortcutInfo) // Configure the intent so that your app's broadcast receiver gets the // callback successfully. For details, see PendingIntent.getBroadcast(). val successCallback = PendingIntent.getBroadcast( context, /* request code */ 0, pinnedShortcutCallbackIntent, /* flags */ PendingIntent.FLAG_IMMUTABLE ) ShortcutManagerCompat.requestPinShortcut( context, pinShortcutInfo, successCallback.intentSender ) }
Benutzerdefinierte Verknüpfungsaktivität erstellen
Sie können auch eine spezielle Aktivität erstellen, mit der Nutzer Verknüpfungen erstellen können, die benutzerdefinierte Optionen und eine Bestätigungsschaltfläche enthalten. Abbildung 2 zeigt ein Beispiel für diese Art von Aktivität in der Gmail App.
Fügen Sie in der Manifestdatei Ihrer App ACTION_CREATE_SHORTCUT dem <intent-filter>-Element der Aktivität hinzu. Diese Deklaration legt das folgende Verhalten fest, wenn der Nutzer versucht, eine Verknüpfung zu erstellen:
- Das System startet die spezielle Aktivität Ihrer App.
- Der Nutzer legt Optionen für die Verknüpfung fest.
- Der Nutzer wählt den Bestätigungsbutton aus.
- Ihre App erstellt die Verknüpfung mit der Methode
createShortcutResultIntent(). Diese Methode gibt einIntentzurück, das Ihre App mithilfe vonsetResult()an die zuvor ausgeführte Aktivität weiterleitet. - Ihre App ruft
finish()für die Aktivität auf, mit der die benutzerdefinierte Verknüpfung erstellt wurde.
Ebenso kann Ihre App Nutzer nach der Installation oder beim ersten Starten der App auffordern, angepinnte Verknüpfungen zum Startbildschirm hinzuzufügen. Diese Methode ist effektiv, da sie Nutzern hilft, eine Verknüpfung im Rahmen ihres normalen Workflows zu erstellen.
Tastenkombinationen testen
Wenn Sie die Verknüpfungen Ihrer App testen möchten, installieren Sie die App auf einem Gerät mit einem Launcher, der Verknüpfungen unterstützt. Führen Sie dann folgende Schritte aus:
- Halten Sie das Launcher-Symbol Ihrer App gedrückt, um die Verknüpfungen aufzurufen, die Sie für Ihre App definiert haben.
- Ziehen Sie eine Verknüpfung, um sie an den Launcher des Geräts anzupinnen.