Après avoir créé des raccourcis, vous devrez peut-être les gérer pendant toute la durée de vie votre application. Par exemple, vous pouvez optimiser votre application en déterminant vos utilisateurs effectuent souvent des actions spécifiques avec vos raccourcis. Dans un autre cas, vous pouvez décider de désactiver un raccourci épinglé pour empêcher votre application de des actions obsolètes ou manquantes. Pour les raccourcis référencés dans conversations, vous pouvez suivre l'utilisation pour fournir des signaux qui améliorent le classement des raccourcis.
Cette page décrit ces méthodes et plusieurs autres méthodes courantes pour gérer votre les raccourcis clavier.
Comportement des raccourcis
Les sections suivantes contiennent des informations générales sur le comportement des raccourcis, y compris la visibilité, l'ordre d'affichage et les classements.
Visibilité des raccourcis
Les raccourcis statiques et les raccourcis dynamiques s'affichent dans un lanceur d'applications compatible l'assistant lorsque l'utilisateur effectue un geste ou une commande vocale spécifique. Activé les lanceurs d'applications compatibles, le geste appuyer de manière prolongée sur l'icône de lanceur de l'application, mais le geste peut être différent sur d'autres applications de lancement. Avec Google Assistant, les raccourcis peuvent être affichés dans l'Assistant ou lancés par un utilisateur commande vocale.
La classe LauncherApps
fournit des API permettant aux applications de lanceur d'accéder
les raccourcis clavier.
Étant donné que les raccourcis épinglés s'affichent dans le lanceur d'applications, ils sont toujours visibles. Un raccourci épinglé n'est supprimé du Lanceur d'applications que dans les cas suivants:
- L'utilisateur la supprime.
- L'application associée au raccourci est désinstallée.
- L'utilisateur efface les données d'une application en accédant à Paramètres > Applications et notifications, en sélectionnant l'application, puis en appuyant sur Stockage > Vider l'espace de stockage
Cibles de partage sont un sous-ensemble de raccourcis dynamiques qui s'affichent sur la ligne de partage direct Feuille de partage Android
Ordre d'affichage des raccourcis
Lorsque le lanceur d'applications affiche les raccourcis d'une application, ceux-ci doivent apparaître comme suit : commande:
- Raccourcis statiques: raccourcis dont la méthode
isDeclaredInManifest()
renvoietrue
. - Raccourcis dynamiques: raccourcis dont l'icône
ShortcutInfo.isDynamic()
renvoietrue
.
Dans chaque type de raccourci (statique ou dynamique), les raccourcis sont triés par ordre de
Augmentation du classement d'après ShortcutInfo.getRank
Assistant Google
tient également compte du classement des raccourcis lors de la sélection des raccourcis contextuels à afficher
utilisateurs.
Les classements sont des nombres entiers séquentiels non négatifs. Les raccourcis statiques sont classés
du premier au dernier, dans l'ordre dans lequel ils apparaissent dans votre fichier shortcuts.xml
. Pour les créations dynamiques
vous pouvez mettre à jour le classement des raccourcis existants lorsque vous appelez
updateShortcuts(Context, List)
,
addDynamicShortcuts(Context, List)
,
pushDynamicShortcut(Context, ShortcutInfoCompat)
ou
setDynamicShortcuts(Context, List)
.
L'ordre des cibles de partage dépend de plusieurs facteurs, dont les anciens
historique, récence, fréquence,
indice de classement,
l'utilisation des applications et la priorité de la conversation associée à
le raccourci de partage. Partager les cibles créées à l'aide de
API Share Shortcuts
sont prioritaires par rapport aux cibles de partage produites par
ChooserTargetService
qui était obsolète dans Android 11. Dans Android 12 et versions ultérieures, les cibles de partage
généré par le ChooserTargetService
obsolète n'apparaîtra plus dans le
partager la feuille.
La plupart des lanceurs d'applications affichent un maximum de quatre raccourcis. Pour toute combinaison de les raccourcis statiques et les raccourcis dynamiques définis, le lanceur d'applications affiche un au maximum deux raccourcis statiques et deux raccourcis dynamiques. Par exemple, si vous définir quatre raccourcis statiques et créer par programmation trois raccourcis dynamiques le lanceur d'applications affiche les deux premiers raccourcis statiques raccourcis dynamiques les mieux classés.
Gérer plusieurs intents et activités
Si vous souhaitez que votre application effectue plusieurs opérations lorsque l'utilisateur active un vous pouvez le configurer pour déclencher des activités successives. Vous pouvez en attribuant plusieurs intents, en démarrant une activité ou en définissant des indicateurs d'intent, selon le type de raccourci.
Attribuer plusieurs intents
Lorsque vous créez un raccourci avec ShortcutInfoCompat.Builder
, vous pouvez utiliser
setIntents()
au lieu de setIntent()
. En appelant setIntents()
, vous
peut lancer plusieurs activités dans votre application
lorsque l'utilisateur sélectionne un raccourci,
en plaçant toutes les activités, à l'exception de la dernière, sur la pile "Retour". Si le
l'utilisateur appuie ensuite sur le bouton "Retour" de l'appareil, il voit une autre activité dans votre application
au lieu de revenir au lanceur d’applications de l’appareil.
Démarrer une activité à partir d'une autre
Les raccourcis statiques ne peuvent pas comporter d'indicateurs d'intent personnalisés. Le premier intent d'une requête
le raccourci contient toujours Intent.FLAG_ACTIVITY_NEW_TASK
et
Intent.FLAG_ACTIVITY_CLEAR_TASK
défini. Cela signifie que lorsque votre application est
toutes les activités de l'application sont détruites
raccourci est lancé. Si ce comportement n'est pas souhaitable, vous pouvez utiliser un trampoline
activité : une activité invisible qui lance une autre activité,
Activity.onCreate(Bundle)
qui appelle Activity.finish()
:
- Dans le fichier
AndroidManifest.xml
, incluez l'attribution des attributs.android:taskAffinity=
" dans l'activité des trampolines. - Dans le fichier de ressources de raccourcis, faites référence à l'activité du trampoline dans dans le raccourci statique.
Pour plus d'informations sur les activités de trampoline, consultez la section Démarrer une activité d'une autre source.
Définir des indicateurs d'intent
Vous pouvez publier des raccourcis dynamiques avec n'importe quel ensemble d'options Intent
.
De préférence, spécifiez Intent.FLAG_ACTIVITY_CLEAR_TASK
avec vos autres
options. Si vous essayez de démarrer une autre tâche alors que votre application
il est possible que l'activité cible ne s'affiche pas.
Pour en savoir plus sur les tâches et les indicateurs d'intent, consultez Tâches et pile "Retour".
Mettre à jour les raccourcis
L'icône de lanceur de chaque application peut contenir au maximum un certain nombre d'éléments statiques et dynamiques
de raccourcis combinés, soit égale à la valeur renvoyée par
getMaxShortcutCountPerActivity
Il n'y a pas de limite au nombre
les raccourcis épinglés qu'une application peut créer.
Lorsqu'un raccourci dynamique est épinglé, même si l'éditeur le supprime en tant que
raccourci dynamique, le raccourci épinglé reste visible et peut être lancé. Cela permet
une application comporte plus de getMaxShortcutCountPerActivity()
raccourcis.
Prenons l'exemple suivant, qui suppose que la valeur renvoyée par
getMaxShortcutCountPerActivity()
est 4
:
- Une application de chat publie quatre raccourcis dynamiques, qui représentent les quatre conversations récentes: c1, c2, c3 et c4.
- L'utilisateur épingle les quatre raccourcis.
- Plus tard, l'utilisateur démarre trois conversations supplémentaires: c5, c6 et c7. La l'application de l'éditeur republie ses raccourcis dynamiques. Nouveau raccourci dynamique liste est: c4, c5, c6 et c7.
L'application doit supprimer c1, c2 et c3, car elle ne peut pas afficher plus de quatre des raccourcis dynamiques. Toutefois, c1, c2 et c3 sont toujours des raccourcis épinglés que auquel l'utilisateur peut accéder et lancer l'application.
L'utilisateur peut alors accéder à sept raccourcis au total, qui lui permettent d'accéder aux activités de l'application de l'éditeur. En effet, le total inclut le nombre maximal raccourcis et les trois raccourcis épinglés.
- L'application peut utiliser
updateShortcuts(Context, List)
pour mettre à jour n'importe quelle les sept raccourcis existants. Par exemple, vous pouvez modifier cet ensemble de raccourcis lorsque les pairs du chat les icônes changent. - Vous pouvez utiliser
addDynamicShortcuts(Context, List)
etsetDynamicShortcuts(Context, List)
méthodes pour mettre à jour les raccourcis existants avec les mêmes identifiants. Toutefois, vous ne pouvez pas les utiliser pour mettre à jour les raccourcis épinglés, car ces deux méthodes essaient de convertir les listes données de des raccourcis vers des raccourcis dynamiques.
Le nombre de raccourcis pouvant être affichés n'est pas limité
comme l'Assistant Google. Utilisez le pushDynamicShortcut()
de la bibliothèque Jetpack ShortcutManagerCompat
pour créer et mettre à jour
raccourcis à utiliser dans les applications avec l'Assistant. Ajoutez également l'intégration des raccourcis Google
bibliothèque à votre application pour permettre l'affichage de liens dynamiques sur Google
Assistant.
Pour en savoir plus sur les consignes concernant les raccourcis d'application, y compris la modification des raccourcis, consultez la section Bonnes pratiques concernant les raccourcis.
Gérer les modifications des paramètres régionaux du système
Les applications doivent mettre à jour les raccourcis dynamiques et épinglés lorsqu'elles reçoivent le
Diffusion Intent.ACTION_LOCALE_CHANGED
indiquant une modification du système
paramètres régionaux.
Suivre l'utilisation des raccourcis
Pour déterminer les situations dans lesquelles des raccourcis statiques et dynamiques apparaissent,
le lanceur d’applications examine l’historique
d’activation des raccourcis. Pour les raccourcis statiques,
vous pouvez savoir à quel moment les utilisateurs effectuent des actions spécifiques dans votre application en
appeler la méthode reportShortcutUsed()
et lui transmettre l'ID d'un
raccourci lorsque l'un des événements suivants se produit:
- L'utilisateur sélectionne le raccourci avec l'ID donné.
- Dans l'application, l'utilisateur effectue manuellement l'action correspondant à même raccourci.
Votre application suit l'utilisation des raccourcis dynamiques en appelant la méthode
pushDynamicShortcut()
et en lui transmettant l'ID du raccourci lorsqu'une
qu'un événement pertinent se produise. L'utilisation d'un raccourci dynamique
avec cette méthode permet
les applications de l'Assistant Google, comme l'Assistant Google, suggèrent des raccourcis pertinents aux utilisateurs.
Étant donné que la méthode pushDynamicShortcut()
signale l'utilisation lorsqu'elle est appelée, n'appelez pas
la méthode reportShortcutUsed()
pour les mêmes raccourcis.
Pour les raccourcis liés aux conversations, il est important de suivre l'utilisation des communications et les messages entrants. Pour en savoir plus, consultez les bonnes pratiques pour les personnes et conversations.
Désactiver les raccourcis
Comme votre application et ses utilisateurs peuvent épingler des raccourcis dans le lanceur d'applications de l'appareil,
il est possible que ces raccourcis épinglés dirigent les utilisateurs vers des actions dans votre application
qui sont obsolètes ou qui n'existent plus. Pour gérer cette situation, vous pouvez
désactiver les raccourcis que les utilisateurs ne doivent pas sélectionner en appelant
disableShortcuts
, qui supprime les raccourcis spécifiés du
et les raccourcis dynamiques, et désactive les copies épinglées de ces raccourcis. Toi
peut également utiliser une version surchargée de cette méthode qui accepte un
CharSequence
en tant que message d'erreur personnalisé. Ce message d'erreur apparaît alors
lorsque les utilisateurs tentent de lancer un raccourci désactivé.
Limitation du débit
Lorsque vous utilisez setDynamicShortcuts(), addDynamicShortcuts()
, ou
updateShortcuts()
, vous ne pourrez peut-être les appeler que
un nombre spécifique de fois dans une application en arrière-plan, c'est-à-dire une application sans activité ni
au premier plan. Le nombre maximal de fois où vous pouvez
est appelée limitation du débit. Cette fonctionnalité empêche
ShortcutManagerCompat
de surconsommer des ressources de l'appareil.
Lorsque la limitation du débit est active, isRateLimitingActive()
renvoie la valeur "true".
Cependant, la limitation du débit est réinitialisée lors de certains événements. Ainsi, même les applications en arrière-plan
peut appeler des méthodes ShortcutManager
jusqu'à ce que la fréquence limite soit de nouveau atteinte. Ces
sont les suivants:
- Une application s'affiche au premier plan.
- Les paramètres régionaux du système changent.
- L'utilisateur effectue l'action de réponse intégrée sur une notification.
Si vous rencontrez une limitation du débit pendant le développement ou les tests, vous pouvez sélectionner
Options pour les développeurs > Réinitialiser la limitation de fréquence ShortcutManager à partir de l'appareil
paramètres, ou saisissez la commande suivante dans adb
:
$ adb shell cmd shortcut reset-throttling [ --user your-user-id ]
Sauvegarder et restaurer
Vous pouvez autoriser les utilisateurs à effectuer des opérations de sauvegarde et de restauration sur votre application lorsque
changer d'appareil en incluant le android:allowBackup="true
" attribut
dans le fichier manifeste de votre application. Si vous proposez la sauvegarde et la restauration, conservez
tenez compte des points suivants concernant les raccourcis d'application:
- Les raccourcis statiques sont republiés automatiquement, mais seulement une fois que l'utilisateur réinstalle votre application sur un nouvel appareil.
- Les raccourcis dynamiques ne sont pas sauvegardés : incluez une logique dans votre application pour la republier quand un utilisateur ouvre votre application sur un nouvel appareil.
- Les raccourcis épinglés sont restaurés automatiquement dans le lanceur d'applications de l'appareil, mais les le système ne sauvegarde pas les icônes associées aux raccourcis épinglés. Par conséquent, enregistrez vos raccourcis épinglés dans votre application afin de pouvoir les restaurer facilement un nouvel appareil.
L'extrait de code suivant montre comment restaurer au mieux les paramètres dynamiques de votre application et comment vérifier si les raccourcis épinglés de votre application ont été conservés:
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. } } } // ... }