6 votes

Récupérer (liste des) applications par défaut via ADB

Beaucoup d'entre vous connaissent (ou du moins ont entendu parler) de commandes telles que adb shell pm list packages o adb shell dumpsys package pour récupérer une liste des applications disponibles sur votre appareil. Ce que je cherche et ne trouve pas, c'est une commande pour lister les applications par défaut - comme ce qui est défini comme lanceur par défaut, appareil photo par défaut, navigateur par défaut, etc. Il n'est même pas possible d'analyser les détails complets de toutes les applications par le biais, par exemple, d'une commande de recherche. for app in $(pm list packages); do [[ -n "$(dumpsys package ${app#package:} | grep APP_BROWSER)" ]] && echo ${app#package:}; done révèle que (la commande listerait simplement tous les navigateurs web sur l'appareil).

Alors comment puis-je demander ces applications par défaut via ADB ? C'est très bien si je dois passer le "type" (par exemple APP_BROWSER dans mon exemple) tant qu'il y a une référence de types disponible.

4voto

Milner Points 533

Entre-temps, j'ai trouvé une résolution partielle fonctionnant avec Android 7/8 et plus (lorsque le cmd package a été ajoutée) :

  • Numéroteur par défaut : cmd package resolve-activity tel://123456
  • Courrier par défaut : cmd package resolve-activity mailto:john@example.com
  • Navigateur par défaut : cmd package resolve-activity http://www.example.com/
  • Messagerie par défaut : cmd package resolve-activity sms://123456
  • Lanceur d'écran d'accueil par défaut : cmd package resolve-activity -c android.intent.category.HOME -a android.intent.action.MAIN

Dans la sortie, alors grep para packageName= (par exemple packageName=com.android.messaging pour l'application SMS par défaut). Si une action donnée n'est pas définie par défaut (par exemple, plusieurs navigateurs sont installés mais aucun n'a été déclaré comme étant "toujours utilisé"), l'action sera résolue par le système d'exploitation ( packageName=android ) pour inviter l'utilisateur. Remarque : si vous voulez vérifier les alternatives disponibles, remplacez simplement resolve-activity con query-activities (notez qu'il peut également renvoyer une ligne unique comme "Aucune activité trouvée", en particulier sur Android < 8).

J'appelle cela une "résolution partielle" car il manque plusieurs applications par défaut que je n'ai aucune idée de l'activité à demander - comme la Lanceur d'écran d'accueil par défaut (note : je viens de comprendre) ou l'application de l'assistant (les conseils sont les bienvenus !).

Merci à Irfan Latif pour avoir indiqué une solution pour Android 10 et plus. Ici, le gestionnaire du rôle a été ajouté, ce que j'avais déjà trouvé mais je n'avais pas trouvé comment l'appeler via ADB. Il s'avère que c'est parce que tous mes appareils fonctionnent sous Android < 10 (et comme je viens de le dire, le gestionnaire de rôles a été ajouté avec Android 10), et la commande serait la suivante dumpsys role (mais pas disponible avant Android 10).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X