30 votes

pm hide VS pm disable -- la crise d'identité

Quel est le besoin de pm disable quand pm hide fait déjà son travail ?

J'ai compilé quelques informations sur la base de mes recherches : cliquez ici. aquí pour voir le tableau ( édité ).

Comme vous pouvez le voir, pm hide peut réaliser ce que pm disable peut, mais sans avoir besoin de l'accès Root . De plus, d'après mes tests, je suis arrivé à la conclusion que lorsque pm hide est effectuée, contrairement à pm disable Quoi qu'il en soit, l'application ne sera pas rechargée dans la mémoire.

Je pense que cacher descendant de bloc . Bloc a été introduit pour la première fois dans KitKat 4.4.0 Il est resté jusqu'à Aperçu d'Android L et a été remplacée plus tard par cacher dans Android 5.0.0. Je ne comprends pas très bien ce qui a conduit au changement de nom de l'outil de recherche. bloc a cacher et pourquoi était-elle nécessaire ?

Quoi qu'il en soit, si quelqu'un qui n'a pas accès à Root peut réaliser la fonctionnalité de désactiver alors pourquoi désactiver n'existe pas du tout ?

En outre, pourquoi cacher existe ? Si cacher a été conçu pour aider les utilisateurs à se débarrasser de tout ce qu'ils veulent, sans désinstallation et sans rooter l'appareil, alors l'interface graphique devrait comporter une option appropriée, mais nous avons seulement l'option de désactivation .

Entrecroisez les questions :

  • Quels sont leurs mérites et leurs inconvénients, à l'exception de ceux mentionnés dans ma question ?

  • Pourquoi les deux existent-ils et à quoi servent-ils ?

  • Est-il techniquement vrai que cacher surpasse la fonctionnalité de désactiver y peut vraiment désactiver n'importe quelle application lorsqu'elle est exécutée sur elle ?

  • Nouveau : Compte tenu des résultats d'Andrew T. et de mes tests indiqués dans le tableau, le composant indiqué dans le tableau est le suivant cacher Est-ce que l'usage de l'UE est une erreur ou est-ce que je n'ai pas compris l'usage de l'UE ?

    A des fins historiques : cacher L'usage de l'entreprise est actuellement le suivant

      pm hide [--user USER_ID] PACKAGE_OR_COMPONENT

Nota: La question ne cherche en aucun cas à obtenir des opinions non fondées, mais des réponses directes et précises. Si vous devez écrire une opinion, assurez-vous de l'étayer en utilisant des sources crédibles et techniques avec un raisonnement solide pour faire la distinction entre ce qui est technique et réel et ce qui est spéculatif.


Tests effectués sur Carbon ROM (Android 5.1.1) et COS12 (Android 5.0.2) pour le OnePlus One.

7 votes

La plus grande différence est que vous pouvez désactiver le composant per-app (activité, service, récepteur de diffusion, fournisseur de contenu) sans désactiver l'application elle-même, mais vous pouvez seulement masquer l'ensemble de l'application . Le site pm L'usage est légèrement confus pour hide mais le code sous-jacent ne traite que l'ensemble du paquet, et non le composant. En d'autres termes, hide est temporaire uninstall -k .

1 votes

C'est une information intéressante. Maintenant que vous avez mentionné cette information, je testerais et rapporterais si hide peut désactiver un composant ou non. Son utilisation semble être une copie de disable : Android.googlesource.com/platform/frameworks/base/+/

3 votes

C'est pourquoi c'est trompeur ; runSetEnabledSetting() vérifie le nom du composant, mais runSetHiddenSetting() ne vérifie que le nom du paquet. Je ne suis pas sûr qu'il puisse cacher les composants à l'avenir.

3voto

Jeff Luyet Points 181

Je n'ai pas encore assez de points pour commenter.. Ce n'est pas une réponse... plutôt une... information :

pm hide does este

pm disable does este y si il peut trouver le nom du composant alors este .

Je peux voir comment certaines personnes ont pu penser que pm hide ferait une désinstallation.

ex. Si vous exécutez cette commande après un pm hide

diff <(adb shell pm list packages -u) <(adb shell pm list packages)

Vous verrez votre paquet caché. -u est une liste des paquets précédemment désinstallés.

Ces commandes pm ci-dessous invoquent toutes la classe Intent des androïdes.

pm hide <package>
pm unhide <package>
pm enable <package>
pm disable <package>

Cette commande ci-dessous :

pm hide <package>

invoque :

android.intent.action.PACKAGE_REMOVED.  

Cette commande ci-dessous :

pm unhide <package>

invoque :

android.intent.action.PACKAGE_ADDED.

pm disable et pm enable sont tous deux invoqués :

android.intent.action.PACKAGE_CHANGED.

Merci @Irfan Latif pour les corrections. Je peux vérifier ce qu'il disait. Sous Paramètres Android : Si vous regardez les applications installées, même après pm cacher, vous pouvez toujours voir que l'application est installée. Il est intéressant de noter qu'avec pm disable, l'application disparaît des applications installées. Ces commandes ne semblent pas créer de changements évidents dans le système de fichiers.

Ces répertoires :

/mnt/sdcard/Android/data/
/data/data

et d'autres répertoires divers...

Une hypothèse possible... Peut-être que la meilleure pratique est de toujours appeler les deux commandes pour désactiver un paquet :

pm disable <package>;pm hide <package>

1 votes

pm hide est disponible sur Android 9 et le fait de cacher une application ne la désinstalle pas. Toutes les données (ou du moins une partie d'entre elles) sont intactes après la suppression de l'application. unhide .

0 votes

J'ai retiré ma référence Android 6 que j'ai retiré quelques secondes avant que vous ne postiez votre commentaire, mais merci pour cela. Selon ce mec, c'est la même chose que désinstaller -k. github.com/blackbbc/Evil-Hide/blob/master/README_fr.md y stackoverflow.com/a/21173985/3066563

2 votes

pm uninstall -k supprime /data/app/<pkg> entièrement le répertoire, pm hide ne le fait pas.

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