Nachdem Sie Verknüpfungen erstellt haben, müssen Sie sie möglicherweise während der gesamten Lebensdauer Ihres für Ihre App. Beispielsweise können Sie Ihre App optimieren, indem Sie festlegen, wie oft Nutzer bestimmte Aktionen mit Ihren Verknüpfungen ausführen. In einem anderen Fall können Sie eine angepinnte Verknüpfung deaktivieren, damit Ihre App veraltete oder fehlende Aktionen ausführen. Für Tastenkombinationen, auf die in den ist es sinnvoll, die Nutzung zu erfassen, um Signale zur Verbesserung der Ranking von Verknüpfungen.
Auf dieser Seite werden diese und einige andere gängige Möglichkeiten zur Verwaltung Ihres Tastenkombinationen.
Verhalten von Verknüpfungen
Die folgenden Abschnitte enthalten allgemeine Informationen zum Verhalten von Verknüpfungen: darunter Sichtbarkeit, Anzeigereihenfolge und Ränge.
Sichtbarkeit von Verknüpfungen
Statische und dynamische Tastenkombinationen werden in einem unterstützten Launcher angezeigt oder wenn der Nutzer eine bestimmte Geste oder einen Sprachbefehl ausführt. An unterstützten Launchern, eine Touch-Geste halten Sie das Launcher-Symbol der App Bei anderen Launcher-Apps kann die Touch-Geste jedoch anders sein. Mit Google Assistant verwenden, können Verknüpfungen in Assistant angezeigt oder von einem Nutzer gestartet werden Sprachbefehl.
Die Klasse LauncherApps
stellt APIs bereit, auf die Launcher-Apps zugreifen können
Tastenkombinationen.
Angeheftete Verknüpfungen werden direkt im Launcher angezeigt und sind daher immer sichtbar. Eine angepinnte Verknüpfung wird nur in den folgenden Situationen aus der Übersicht entfernt:
- Der Nutzer entfernt sie.
- Die mit der Verknüpfung verknüpfte App wurde deinstalliert.
- Der Nutzer löscht die Daten der App unter Einstellungen > Apps und Benachrichtigungen die App auswählen und dann auf Speicher > Speicherinhalt löschen.
Freigabeziele eine Teilmenge der dynamischen Tastenkombinationen, die in der Zeile zum direkten Teilen der Android-Share-Sheet.
<ph type="x-smartling-placeholder">![Screenshot des Android-Sharesheet](https://developer.android.com/static/images/guide/topics/ui/shortcuts/sharesheet.png?hl=de)
Reihenfolge der Tastaturkürzel
Wenn die Verknüpfungen einer App im Launcher angezeigt werden, müssen sie in den folgenden Auftrag:
- Statische Tastenkombinationen: Tastenkombinationen, deren
isDeclaredInManifest()
-Methode gibttrue
zurück. - Dynamische Tastenkombinationen: Verknüpfungen, deren
ShortcutInfo.isDynamic()
gibttrue
zurück.
Innerhalb jedes Verknüpfungstyps – statisch und dynamisch – sind Verknüpfungen in der folgenden Reihenfolge sortiert:
Rang wird gemäß ShortcutInfo.getRank
erhöht. Google Assistant
berücksichtigt auch den Rang von Tastenkürzeln bei der Bestimmung kontextabhängiger Verknüpfungen, die angezeigt werden sollen.
Nutzenden.
Ränge sind nicht negative, sequenzielle Ganzzahlen. Statische Tastenkombinationen sind nach
in der Reihenfolge, in der sie in Ihrer shortcuts.xml
-Datei aufgeführt sind. Für dynamische Creatives
Tastenkombinationen kannst du die Reihenfolge der vorhandenen Verknüpfungen aktualisieren, wenn du anrufst
updateShortcuts(Context, List)
,
addDynamicShortcuts(Context, List)
,
pushDynamicShortcut(Context, ShortcutInfoCompat)
oder
setDynamicShortcuts(Context, List)
Die Reihenfolge der Freigabeziele hängt von verschiedenen Faktoren ab, z. B. von früheren Nutzern
Verlauf, Aktualität, Häufigkeit
Ranghinweis
App-Nutzung und die für die Unterhaltung festgelegte Priorität
Verknüpfung zum Teilen. Freigabeziele, die mit der
Freigabe Shortcuts API
gegenüber den Share-Zielen des
ChooserTargetService
die in Android 11 eingestellt wurde. Ab Android 12: Freigabeziele
die von der eingestellten ChooserTargetService
generiert wurden, werden nicht mehr im
teilen.
Die meisten Launcher zeigen maximal vier Tastenkombinationen an. Für jede Kombination von statische und dynamische Tastenkombinationen festlegen, zeigt der Launcher eine maximal zwei statische und zwei dynamische Tastenkombinationen. Wenn Sie beispielsweise vier statische Verknüpfungen definieren und programmatisch drei dynamische werden die ersten beiden statischen Tastenkombinationen und die beiden die am besten bewerteten dynamischen Tastenkombinationen.
Mehrere Intents und Aktivitäten verwalten
Wenn Ihre App mehrere Vorgänge ausführen soll, wenn der Nutzer ein können Sie sie so konfigurieren, dass aufeinanderfolgende Aktivitäten ausgelöst werden. Sie können indem Sie mehrere Intents zuweisen, mit denen eine Aktivität oder Intent-Flags festlegen.
Mehrere Intents zuweisen
Wenn Sie eine Verknüpfung mit ShortcutInfoCompat.Builder
erstellen, können Sie Folgendes verwenden:
setIntents()
statt setIntent()
. Wenn Sie setIntents()
anrufen,
mehrere Aktivitäten in Ihrer App starten,
wenn der Nutzer eine Verknüpfung auswählt,
und platziert alle bis auf die letzte Aktivität in der Liste in den Stapel. Wenn die
Der Nutzer tippt dann auf die Schaltfläche „Zurück“ des Geräts und er sieht eine andere Aktivität in Ihrer App.
anstatt zum Launcher des Geräts zurückzukehren.
Eine Aktivität aus einer anderen starten
Statische Tastenkombinationen dürfen keine Flags für benutzerdefinierte Intents enthalten. Der erste Intent einer statischen
enthält immer Intent.FLAG_ACTIVITY_NEW_TASK
und
Intent.FLAG_ACTIVITY_CLEAR_TASK
-festgelegt. Das bedeutet, wenn Ihre App
ausgeführt wird, werden alle vorhandenen Aktivitäten in der Anwendung gelöscht, wenn eine statische
wird gestartet. Wenn Sie das nicht möchten, können Sie ein Trampolin verwenden
Aktivität – eine unsichtbare Aktivität, die eine andere Aktivität startet – in
Activity.onCreate(Bundle)
, der Activity.finish()
aufruft:
- Fügen Sie in der Datei
AndroidManifest.xml
die Attributzuweisung hinzu.android:taskAffinity=
beim Trampolin. - Verweisen Sie in der Ressourcendatei für Tastenkombinationen auf die Trampolinaktivität im Intent innerhalb des statischen Kürzels.
Weitere Informationen zu Trampolinaktivitäten finden Sie unter Eine Aktivität starten von einem anderen.
Intent-Flags festlegen
Sie können dynamische Verknüpfungen mit einer beliebigen Reihe von Intent
-Flags veröffentlichen.
Geben Sie vorzugsweise Intent.FLAG_ACTIVITY_CLEAR_TASK
zusammen mit Ihrem anderen
Flags. Wenn Sie versuchen, eine andere Aufgabe zu starten, während Ihre App
ausgeführt wird, wird die Zielaktivität möglicherweise nicht angezeigt.
Weitere Informationen zu Aufgaben und Intent-Flags finden Sie unter Aufgaben und Back-Stack.
Verknüpfungen aktualisieren
Das Launcher-Symbol jeder App kann höchstens eine Reihe statischer und dynamischer
kombinierten Tastenkombinationen,
die dem Wert entsprechen, der von
getMaxShortcutCountPerActivity
Es gibt keine Begrenzung für die Anzahl der
Verknüpfungen, die eine App erstellen kann.
Wenn eine dynamische Verknüpfung angepinnt ist, auch wenn der Publisher sie als
dynamische Verknüpfung, ist die angepinnte Verknüpfung weiterhin sichtbar und kann gestartet werden. Dadurch können
Für eine App gibt es mehr als getMaxShortcutCountPerActivity()
Verknüpfungen.
Betrachten Sie das folgende Beispiel, in dem angenommen wird, dass der von
getMaxShortcutCountPerActivity()
ist 4
:
- Eine Chat-App veröffentlicht vier dynamische Verknüpfungen, die die vier am häufigsten verwendeten Neueste Konversationen: c1, c2, c3 und c4.
- Der Nutzer pinnen alle vier Tastenkombinationen an.
- Später startet der Nutzer drei weitere Unterhaltungen: c5, c6 und c7. Die veröffentlicht die Publisher-App seine dynamischen Verknüpfungen noch einmal. Die neue dynamische Tastenkombination Liste lautet: c4, c5, c6 und c7.
Die App muss c1, c2 und c3 entfernen, da maximal vier Zeichen angezeigt werden können. dynamische Tastenkombinationen. c1, c2 und c3 sind jedoch weiterhin angepinnte auf die der Nutzer zugreifen kann.
Der Nutzer kann dann auf insgesamt sieben Verknüpfungen zugreifen, die mit Aktivitäten in in der Publisher-App. Das liegt daran, dass die Gesamtzahl die maximale Anzahl und die drei angepinnten Tastenkombinationen.
- Die App kann mit
updateShortcuts(Context, List)
alle der bereits sieben Tastenkombinationen. Beispielsweise können Sie diese Tastenkombinationen aktualisieren, wenn die anderen Teilnehmenden ändern sich die Symbole. - Sie können die
addDynamicShortcuts(Context, List)
undsetDynamicShortcuts(Context, List)
Methoden zum Aktualisieren vorhandener Verknüpfungen mit denselben IDs. Sie können sie jedoch nicht für nicht dynamische, nicht dynamische weil mit diesen beiden Methoden versucht wird, zu dynamischen Tastenkombinationen.
Die Anzahl der Tastenkombinationen, die zur Anzeige auf Geräten gedrückt werden können, ist nicht begrenzt.
Assistant-Apps wie Google Assistant. Verwenden Sie den pushDynamicShortcut()
.
der ShortcutManagerCompat
-Jetpack-Bibliothek zum Erstellen und Aktualisieren
Verknüpfungen zur Verwendung in Assistant-Apps. Fügen Sie außerdem die Google Shortcuts Integration
Bibliothek hinzufügen, damit dynamische Links auf Google erscheinen können.
Assistent.
Weitere Informationen zu den Richtlinien für App-Verknüpfungen, z. B. zum Aktualisieren von Verknüpfungen, Siehe Best Practices für Tastenkombinationen.
Umgang mit Änderungen der Systemsprache
Apps müssen dynamische und angepinnte Verknüpfungen aktualisieren, wenn sie die
Intent.ACTION_LOCALE_CHANGED
-Nachricht, die eine Änderung am System anzeigt
Sprache.
Nutzung von Kurzbefehlen verfolgen
Um zu bestimmen, in welchen Situationen statische und dynamische Tastenkombinationen angezeigt werden,
prüft der Launcher den Aktivierungsverlauf von Verknüpfungen. Bei statischen Tastenkombinationen
können Sie verfolgen,
wann Nutzer bestimmte Aktionen in Ihrer App ausführen,
die Methode reportShortcutUsed()
aufrufen und ihr die ID eines
wenn eines der folgenden Ereignisse eintritt:
- Der Nutzer wählt die Verknüpfung mit der angegebenen ID aus.
- Innerhalb der App führt der Nutzer die Aktion manuell aus, die der dieselbe Tastenkombination.
Deine App verfolgt die Nutzung dynamischer Verknüpfungen, indem sie die
pushDynamicShortcut()
hinzu und übergeben Sie die ID der Verknüpfung, wenn ein
relevantes Ereignis eintritt. Wenn Sie die Verwendung dynamischer Tastenkombinationen
mit dieser Methode senden,
schlagen Assistant-Apps wie Google Assistant relevante Verknüpfungen vor.
Da die Methode pushDynamicShortcut()
beim Aufruf die Nutzung meldet, rufen Sie nicht
die Methode reportShortcutUsed()
für dieselben Tastenkombinationen.
Bei Konversationskürzeln ist es wichtig, die Nutzung für ausgehende und eingehende Nachrichten. Weitere Informationen finden Sie in den Best Practices für Personen und Unterhaltungen.
Tastenkombinationen deaktivieren
Da Ihre App und ihre Nutzer Verknüpfungen an den Launcher des Geräts anpinnen können, ist es
können Nutzer über angeheftete Verknüpfungen zu Aktionen in Ihrer App weitergeleitet werden.
die veraltet sind oder nicht mehr existieren. Zur Bewältigung dieser Situation haben Sie folgende Möglichkeiten:
die Verknüpfungen deaktivieren, die Nutzer nicht durch Aufrufen von
disableShortcuts
, wodurch die angegebenen Tastenkombinationen aus der statischen Datei entfernt werden
und dynamische Tastenkombinationen und deaktiviert angepinnte Kopien dieser Tastenkombinationen. Ich
können auch eine überlastete Version dieser Methode verwenden,
CharSequence
als benutzerdefinierte Fehlermeldung. Diese Fehlermeldung erscheint dann
Wenn Nutzer versuchen, eine deaktivierte Verknüpfung zu starten.
Ratenbegrenzung
Wenn Sie die setDynamicShortcuts(), addDynamicShortcuts()
oder
updateShortcuts()
-Methoden verwenden, können Sie diese Methoden möglicherweise nur als
eine bestimmte Anzahl von Malen in einer Hintergrund-App, also einer App ohne Aktivitäten oder
im Vordergrund. Die Begrenzung für die Häufigkeit, mit der Sie
Aufruf dieser Methoden wird als Ratenbegrenzung bezeichnet. Diese Funktion verhindert,
ShortcutManagerCompat
durch übermäßige Nutzung von Geräteressourcen.
Wenn die Ratenbegrenzung aktiv ist, gibt isRateLimitingActive()
„true“ zurück.
Die Ratenbegrenzung wird jedoch während bestimmter Ereignisse zurückgesetzt. Das gilt auch für Hintergrund-Apps,
kann ShortcutManager
-Methoden aufrufen, bis die Ratenbegrenzung wieder erreicht ist. Diese
Ereignisse umfassen Folgendes:
- Eine App wird im Vordergrund angezeigt.
- Das Systemsprache ändert sich.
- Der Nutzer führt die Inline-Antwort-Aktion auf eine Benachrichtigung aus.
Wenn Sie während der Entwicklung oder beim Testen auf eine Ratenbegrenzung stoßen, können Sie
Entwickleroptionen > Zugriffsbegrenzung im ShortcutManager über die
Einstellungen oder Sie können den folgenden Befehl in adb
eingeben:
$ adb shell cmd shortcut reset-throttling [ --user your-user-id ]
Back-up und Wiederherstellung
Sie können Nutzern erlauben, Sicherungs- und Wiederherstellungsvorgänge in Ihrer App auszuführen, wenn
Gerät wechseln, indem Sie „android:allowBackup="true
“ einfügen Attribut
Zuweisung in der Manifestdatei Ihrer App. Wenn Sie Sicherung und Wiederherstellung unterstützen,
beachten Sie die folgenden Hinweise zu App-Verknüpfungen:
- Statische Tastenkombinationen werden automatisch neu veröffentlicht, aber erst, nachdem der Nutzer Ihre App auf einem neuen Gerät neu installiert.
- Dynamische Verknüpfungen werden nicht gesichert. Füge deiner App daher Logik hinzu, um sie neu zu veröffentlichen. wenn ein Nutzer Ihre App auf einem neuen Gerät öffnet.
- Angepinnte Verknüpfungen werden automatisch im Launcher des Geräts wiederhergestellt, aber der Das System sichert keine Symbole, die mit angepinnten Verknüpfungen verknüpft sind. Daher speichern Sie deine angepinnten Verknüpfungen“ in deiner App, sodass du sie später ganz einfach auf einem neuen Gerät.
Im folgenden Code-Snippet sehen Sie, wie Sie die dynamischen Tastenkombinationen und wie Sie prüfen können, ob die angepinnten Verknüpfungen Ihrer App beibehalten wurden:
Kotlin
class MyMainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (ShortcutManagerCompat.dynamicShortcuts.size == 0) { // Application restored. Re-publish dynamic shortcuts. if (ShortcutManagerCompat.pinnedShortcuts.size > 0) { // Pinned shortcuts are restored. Use updateShortcuts() to make // sure they contain up-to-date information. } } } // ... }
Java
public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (ShortcutManagerCompat.getDynamicShortcuts().size() == 0) { // Application restored. Re-publish dynamic shortcuts. if (ShortcutManagerCompat.getPinnedShortcuts().size() > 0) { // Pinned shortcuts are restored. Use pdateShortcuts() to make // sure they contain up-to-date information. } } } // ... }