Existe-t-il un moyen de déterminer quelle application s'appuie sur d'autres applications?
Par exemple, l'application Facebook Messenger peut dessiner des bulles de discussion par-dessus tout, mais comment savoir quelle application fait cela?
Mon problème:
J'ai une application qui dessine des publicités par-dessus tout et je veux savoir quelle application fait cela. Pas seulement pour le désinstaller, mais pour avertir tous ceux qui utilisent cette application. (Je n'ai installé aucune application récemment et j'ai déjà vérifié les dernières mises à jour.)
J'ai essayé d'utiliser la hiérarchie des vues de vidage pour UI Automator à partir d'Android Studio, mais il semble que les applications qui dessinent en haut ne peuvent pas être sélectionnées de cette façon.
(Cliquez sur l'image pour agrandir)
la source
Réponses:
Remarque:
Modifier: coupez la chasse dans la solution précédente et suivez uniquement cette section modifiée.
Configurez adb et exécutez cette commande:
Vous obtiendrez la sortie de toutes les superpositions actives à l'écran. Exemple de sortie avec DU Screen Recorder, Tasker et AZ Screen Recorder montrant les superpositions actives à l'écran:
Le texte en surbrillance à côté de package = et avant appop est le (s) nom (s) de package des applications qui dessinent actuellement la superposition à l'écran. Dans votre cas, la sortie incluant le (s) nom (s) de package serait différente.
Notez le (s) nom (s) du package (désormais PKG) et exécutez cette commande:
Remplacez PKG par le nom du package que vous avez noté. Si vous aviez plusieurs noms de package, répétez la commande avec un seul nom de package à la fois.
La commande arrêterait de force l'application et éliminerait ainsi la superposition. Cela devrait fonctionner. Vous pouvez également retirer l'autorisation de "Dessiner sur d'autres applications" (superposition d'écran en bref) des applications en utilisant cette commande:
Encore une fois, remplacez PKG par le nom du package si nécessaire. En outre, vous devrez peut-être répéter la commande d'arrêt forcé pour le PKG. Si vous décidez d'annuler les modifications, remplacez ignore par allow dans la commande susmentionnée.
Vous pouvez également utiliser App Ops pour gérer les autorisations de l'interface graphique.
Pour savoir quel nom de package correspond à quelle application, vous pouvez essayer une application open source comme Applications Info . Recherchez par nom de package et vous obtiendrez le nom de l'application.
Edition terminée
Vous n'avez vraiment plus besoin de lire maintenant . Je laisse intacte la solution précédente (c'est-à-dire la section suivante) parce que 21 personnes qui l'ont votée l'ont trouvée utile et je ne veux plus me tromper.
Un moyen simple serait de trouver toutes les applications autorisées à "dessiner sur d'autres applications", puis de les distinguer de celles actuellement actives à l'écran. Ensuite, arrêtez de force ces applications courantes jusqu'à ce que vous identifiiez l'application responsable de la superposition active.
Énumérer les applications autorisées à superposer
L'autorisation requise par une application pour créer une superposition est
android.permission.SYSTEM_ALERT_WINDOW
(dessiner sur d'autres applications).Nous devons trouver toutes les applications installées ayant ladite autorisation. C'est à vous de trouver une méthode pour cela. Ma réponse ici peut vous aider.
Notez que nous avons besoin des noms de packages des applications et non de leurs étiquettes.
Sélection de cerises depuis les fenêtres actives
Exécutez la commande
Cela vous donnerait des détails sur la cause de l'affichage de quelque chose à l'écran, y compris le nom du composant d'une application à l'origine de cela.
La façon dont vous extrairez le nom dépend de vous. Vous pouvez cependant essayer cette commande
Si vous recevez l'erreur: 'grep' n'est pas reconnu comme une commande interne ou externe , sous Windows essayez cette commande alternative:
Sortie démo
Dans la sortie ci-dessus, tout ce qui réussit
u0
et précède/
est le nom du package d'une application. Une application peut avoir plusieurs composants affichant quelque chose à l'écran.Vous devez créer une liste de ces noms de packages. Si vous avez BusyBox installé , vous pouvez le faire
Quoi qu'il en soit, vous auriez maintenant deux listes:
android.permission.SYSTEM_ALERT_WINDOW
.Comparez ces deux listes et identifiez les applications qui sont courantes dans les deux listes. Cette troisième liste constituerait des applications autorisées à dessiner une superposition et dessinent actuellement une superposition active à l'écran.
Temps de tuer
Tuez chacune des applications de la troisième liste une par une et notez l'état de la superposition. Vous pouvez utiliser
am force-stop PACKAGE_NAME --user 0
ou toute autre méthode qui vous convient.PACKAGE_NAME
est le nom du package de l'application.EDIT : il n'est pas nécessaire de tuer une application. Vous pouvez envisager de refuser à l'application la permission de dessiner sur d'autres applications. Utilisez cette commande:
Pour annuler les modifications, remplacez deny par allow dans ladite commande et exécutez-la.
Si vous utilisez Android Marshmallow, cette réponse d'Andrew T. peut être utilisée.
Remarque: La commande susmentionnée a été testée avec succès sur Android 5.1.1 et 6.0.1 (versions CM). Il est également possible que la commande fonctionne sur Android 5.0.x mais je ne peux pas garantir . L'exécution de cette commande sur la version Android publiée avant Lollipop entraînerait un échec.
Étant donné que souvent la superposition est perceptible, elle disparaîtrait instantanément au moment où l'application à l'origine de sa suppression, par conséquent, vous sauriez quelle application était à l'origine de cette superposition.
Applications pour applications
Initialement suggéré par Izzy, vous pouvez utiliser une application qui a la fonctionnalité de répertorier les autorisations accordées aux applications installées, pour distinguer les applications qui ont l'autorisation de "dessiner sur d'autres applications". Vous pouvez soit rechercher une telle application par vous-même, soit utiliser la liste Permission checker maintenue par Izzy sur son site Web.
Vous auriez également besoin d'un gestionnaire de processus / application pour forcer / arrêter certains processus. Je recommande OS Monitor mais vous êtes libre d'utiliser n'importe quelle application compétente. Voir les applications associées sous Infos système .
Pour démonstration seulement
J'ai essayé Advanced Permission Manager pour répertorier les applications avec l'autorisation de "dessiner sur d'autres applications". Ensuite, je suis passé à OS Monitor pour voir les applications s'exécuter en premier plan et en arrière-plan. J'ai fait correspondre la sortie des deux applications et arrêté individuellement les applications communes aux deux. Vous pouvez tuer un processus depuis l'intérieur du moniteur du système d'exploitation, donc pas besoin de passer aux paramètres de l'application.
(Cliquez sur l'image pour agrandir)
la source
Si vous utilisez Android 6.0 Marshmallow, vous pouvez utiliser son gestionnaire d'autorisations natif.
D' un article sur BGR ,
Pour répertorier les applications qui peuvent dessiner sur d'autres applications, accédez à Paramètres - Applications - Avancé (menu avec icône d'engrenage) - Dessinez sur d'autres applications .
Vous pouvez également activer / désactiver temporairement la fonctionnalité en appuyant sur l'application et basculer le "Autoriser le dessin sur d'autres applications".
Image reproduite avec l'aimable autorisation de Sebastiano Gottardo sur Medium
la source
Merci beaucoup @Firelord! J'ai enfin trouvé l'application qui m'empêche d'installer des apk et d'effectuer des sauvegardes adb.
Pour moi, j'ai trouvé que c'était une application appelée
Battery Mix
Lire pour voir ce que j'ai fait et comment je l'ai fait.https://play.google.com/store/apps/details?id=jp.smapho.battery_mix
Beaucoup de gens ont eu des problèmes avec l'installation d'apk et n'ont pas pu appuyer sur 'Installer'. Toutes les réponses que j'ai pu trouver étaient principalement destinées à afficher des applications de gradation, de teinture et d'économie d'énergie. Comme je n'en ai pas utilisé ou que j'ai supprimé toutes les applications similaires, j'ai eu du mal à trouver ce qui se passait et quelle application était la coupable. Et enfin! Après une commande simple et une recherche rapide, il a été résolu: D
L'application incriminée
Battery Mix
est une simple application de surveillance de la batterie qui avait la fonction que j'utilisais pour afficher une fine ligne en haut de l'écran pour montrer l'état du niveau de la batterie (une excellente petite application).Donc, pour diagnostiquer, j'ai utilisé une commande de
Firelord
(ci-dessus) pour vider un fichier texte, puis pour rechercher l'application qui provoquait le système Android pour m'empêcher de cliquer sur ce bouton Installer.Exécuter la commande à partir du PC
adb shell dumpsys window windows > dumpsys-windows.txt
Rechercher
SYSTEM_ALERT_WINDOW
Pour trouver toutes les applications incriminées, j'ai recherché la chaîne ci-dessus
Ce qui m'a donné la ligne:
mOwnerUid=10129 mShowToOwnerOnly=true package=jp.smapho.battery_mix appop=SYSTEM_ALERT_WINDOW
(Voir téléchargement d'image pour la section du fichier texte)
immédiatement, je pouvais reconnaître à quelle application il faisait référence: jp.smapho. battery_mix
Alors maintenant, je sais tuer cette application chaque fois que je prévois de charger latéralement ou avant les sauvegardes adb.
la source
Pour Android Marshmallow et Oxygen 3.0.2, Désactivation de la disposition de l'écran contextuelle
Accédez à Applications et configurez les applications et sélectionnez Dessiner sur d'autres applications.
Allez et sélectionnez l'application pour la désactiver afin que l'application soit débloquée de la mise en page de l'écran persmission. et l'application peut obtenir directement des autorisations
Accédez à l'application et aux autorisations respectives et activez les autorisations que vous souhaitez.
Prendre plaisir
Raj
la source