Gibt es eine Möglichkeit, festzustellen, welche Anwendung auf anderen Anwendungen basiert?
Beispielsweise kann die Facebook Messenger-App die Chat-Sprechblasen über alles zeichnen. Aber woher weiß ich, welche App dies tut?
Mein Problem:
Ich habe eine App, die Anzeigen über alles zeichnet, und ich möchte wissen, welche App dies tut. Nicht nur, um es zu deinstallieren, sondern um jeden zu warnen, der diese App nutzt. (Ich habe in letzter Zeit keine Anwendung installiert und die letzten Updates bereits überprüft.)
Ich habe versucht, die Dump View-Hierarchie für UI Automator aus Android Studio zu verwenden, aber es scheint, dass die Anwendungen, die oben zeichnen, nicht auf diese Weise ausgewählt werden können.
(Zum Vergrößern auf das Bild klicken)
applications
overlay
andreroggeri
quelle
quelle
Antworten:
Hinweis:
Bearbeiten: Schneiden Sie die Verfolgung in der früheren Lösung ab und folgen Sie nur diesem bearbeiteten Abschnitt.
Richten Sie adb ein und führen Sie den folgenden Befehl aus:
Sie erhalten die Ausgabe aller aktiven Overlays auf dem Bildschirm. Beispiel einer Ausgabe mit DU Screen Recorder, Tasker und AZ Screen Recorder, die aktive Overlays auf dem Bildschirm anzeigt:
Der hervorgehobene Text neben package = und vor appop ist der / die Paketname (n) der App (s), die gerade eine Überlagerung auf dem Bildschirm zeichnen . In Ihrem Fall würde sich die Ausgabe einschließlich der Paketnamen unterscheiden.
Notieren Sie sich die Paketnamen (nachfolgend als PKG bezeichnet) und führen Sie den folgenden Befehl aus:
Ersetzen Sie PKG durch den Paketnamen, den Sie notiert haben. Wenn Sie mehrere Paketnamen hatten, wiederholen Sie den Befehl mit jeweils einem Paketnamen.
Der Befehl würde die App gewaltsam stoppen und dadurch die Überlagerung verwerfen. Das sollte funktionieren. Alternativ können Sie den Apps die Berechtigung "Über andere Apps zeichnen" (kurz "Bildschirmüberlagerung") mit folgendem Befehl entziehen:
Ersetzen Sie PKG bei Bedarf durch den Paketnamen. Darüber hinaus müssen Sie möglicherweise den Force-Stop-Befehl für die PKG wiederholen. Wenn Sie die Änderungen rückgängig machen möchten, ersetzen Sie Ignorieren durch Zulassen im oben genannten Befehl.
Sie können alternativ App Ops verwenden , um die Berechtigungen über die GUI zu verwalten.
Um zu wissen, welcher Paketname zu welcher App gehört, können Sie eine Open-Source-App wie Applications Info ausprobieren . Suchen Sie nach dem Paketnamen und Sie erhalten den Namen der App.
Bearbeiten beendet
Sie brauchen jetzt wirklich nicht mehr zu lesen . Ich lasse die frühere Lösung (dh folgenden Abschnitt) intakt, da 21 Personen, die abgestimmt haben, dies als hilfreich empfanden und ich nicht mehr durcheinander bringen möchte.
Eine einfache Möglichkeit wäre, alle Apps mit der Berechtigung "Über andere Apps ziehen" herauszufinden und sie dann aus den derzeit auf dem Bildschirm aktiven herauszusuchen. Erzwingen Sie anschließend das Stoppen dieser gängigen Apps, bis Sie die für die aktive Überlagerung verantwortliche App ausgewählt haben.
Zählen Sie Apps auf, die die Berechtigung zum Overlay haben
Die Berechtigung, die eine App zum Erstellen eines Overlays benötigt, ist
android.permission.SYSTEM_ALERT_WINDOW
(über andere Apps ziehen).Wir müssen alle installierten Apps mit dieser Berechtigung herausfinden. Es liegt an Ihnen, eine Methode dafür zu finden. Meine Antwort hier kann Ihnen helfen.
Beachten Sie, dass wir die Paketnamen der Apps und nicht deren Bezeichnungen benötigen .
Kirschpickel aus aktiven Fenstern
Führen Sie den Befehl aus
Auf diese Weise erhalten Sie Informationen darüber, was zur Anzeige auf dem Bildschirm geführt hat, einschließlich des Komponentennamens einer App, die dies verursacht.
Wie Sie den Namen extrahieren, liegt bei Ihnen. Sie können diesen Befehl jedoch versuchen
Wenn Sie den Fehler erhalten: 'grep' wird nicht als interner oder externer Befehl erkannt , versuchen Sie unter Windows diesen alternativen Befehl:
Demo-Ausgabe
In der obigen Ausgabe ist alles, was folgt
u0
und vorangeht,/
der Paketname einer App. Eine App kann mehrere Komponenten haben, die etwas auf dem Bildschirm anzeigen.Sie müssen eine Liste dieser Paketnamen erstellen. Wenn Sie BusyBox installiert haben , können Sie dies tun
Jedenfalls hätten Sie jetzt zwei Listen:
android.permission.SYSTEM_ALERT_WINDOW
.Vergleichen Sie diese beiden Listen und wählen Sie die Apps aus, die in beiden Listen enthalten sind. Diese dritte Liste enthält Apps, die zum Zeichnen von Overlays berechtigt sind und derzeit ein aktives Overlay auf dem Bildschirm zeichnen.
Zeit zu töten
Beenden Sie jede der Apps aus der dritten Liste nacheinander und stellen Sie den Status der Überlagerung fest. Sie können
am force-stop PACKAGE_NAME --user 0
jede andere Methode verwenden, die zu Ihnen passt.PACKAGE_NAME
ist der Paketname der App.EDIT : Es ist nicht notwendig, eine App zu töten. Sie können erwägen, der App die Berechtigung zum Ziehen über andere Apps zu verweigern. Verwenden Sie diesen Befehl:
Um die Änderungen rückgängig zu machen, ersetzen Sie den Befehl deny durch allow und führen Sie ihn aus.
Wenn Sie Android Marshmallow verwenden, kann diese Antwort von Andrew T. verwendet werden.
Hinweis: Der oben genannte Befehl wurde erfolgreich auf Android 5.1.1 und 6.0.1 (CM-Builds) getestet. Es ist auch möglich, dass der Befehl auf Android 5.0.x funktioniert, aber ich kann nicht garantieren . Die Ausführung dieses Befehls in einer Android-Version, die vor Lollipop veröffentlicht wurde, würde einen Fehler verursachen.
Da die Überlagerung häufig wahrnehmbar ist, verschwindet sie sofort, sobald die App, die sie verursacht hat, beendet wird. Daher wissen Sie, welche App diese Überlagerung verursacht hat.
Apps für Apps
Ursprünglich von Izzy vorgeschlagen, können Sie eine App verwenden, die über die Funktionalität verfügt, Berechtigungen für installierte Apps aufzulisten, um die Apps mit der Berechtigung "Über andere Apps ziehen" herauszugreifen. Sie können eine solche App entweder selbst suchen oder die von Izzy auf seiner Website gepflegte Liste Permission checker verwenden .
Sie benötigen außerdem einen Prozess- / App-Manager, um bestimmte Prozesse anzuhalten / abzubrechen. Ich empfehle OS Monitor, aber es steht Ihnen frei, eine kompetente App zu verwenden. Siehe verwandte Apps unter System Info .
Nur zu Demonstrationszwecken
Ich habe Advanced Permission Manager versucht , Apps mit der Berechtigung zum "Ziehen über andere Apps" aufzulisten. Danach wechselte ich zu OS Monitor, um die Apps im Vordergrund und im Hintergrund zu sehen. Ich habe die Ausgabe von beiden Apps abgeglichen und die Apps, die in beiden Apps gemeinsam sind, einzeln gestoppt. Sie können einen Prozess über den OS-Monitor beenden, sodass Sie nicht zu den App-Einstellungen wechseln müssen.
(Zum Vergrößern auf das Bild klicken)
quelle
Wenn Sie Android 6.0 Marshmallow verwenden, können Sie dessen nativen Berechtigungsmanager verwenden.
Aus einem Artikel über die BGR ,
Um die Apps aufzulisten, die über andere Apps zeichnen können, gehen Sie zu Einstellungen - Apps - Erweitert (Menü mit Zahnradsymbol) - Über andere Apps zeichnen .
Sie können die Funktion auch vorübergehend aktivieren / deaktivieren, indem Sie auf die App tippen und die Option "Zeichnen über andere Apps zulassen" aktivieren / deaktivieren.
Mit freundlicher Genehmigung von Sebastiano Gottardo auf Medium
quelle
Vielen Dank an @Firelord! Ich habe endlich die App gefunden, die mich daran gehindert hat, apks zu installieren und adb-Backups durchzuführen.
Für mich war es eine App namens
Battery Mix
Read on, um zu sehen, was ich tat und wie ich es tat.https://play.google.com/store/apps/details?id=jp.smapho.battery_mix
Viele Leute hatten Probleme mit der Installation von apk's und konnten nicht auf "Installieren" klicken. Alle Antworten, die ich finden konnte, betrafen hauptsächlich das Anzeigen von abblendenden, getönten und stromsparenden Apps. Da ich keine oder alle ähnlichen Apps verwendet hatte, hatte ich Schwierigkeiten herauszufinden, was los war und welche App der Schuldige war. Und schlussendlich! Nach einem einfachen Befehl und einer schnellen Suche wurde es gelöst: D
Die anstößige App
Battery Mix
ist eine einfache Batterieüberwachungs-App, mit der ich oben auf dem Bildschirm eine dünne Linie angezeigt habe, um den Ladezustand der Batterie anzuzeigen (eine großartige kleine App).Zur Diagnose habe ich einen Befehl von
Firelord
(oben) verwendet, um eine Textdatei zu sichern und dann nach der App zu suchen, die das Android-System veranlasste, mich daran zu hindern, auf diese Schaltfläche "Installieren" zu klicken.Befehl vom PC ausführen
adb shell dumpsys window windows > dumpsys-windows.txt
Suchen nach
SYSTEM_ALERT_WINDOW
Um problematische Anwendungen zu finden, habe ich nach der obigen Zeichenfolge gesucht
Welches gab mir die Zeile:
mOwnerUid=10129 mShowToOwnerOnly=true package=jp.smapho.battery_mix appop=SYSTEM_ALERT_WINDOW
(Siehe Bild-Upload für den Abschnitt der Textdatei)
sofort konnte ich erkennen, auf welche app es sich bezog: jp.smapho. battery_mix
Jetzt weiß ich, dass ich diese App beenden muss, wenn ich vorhabe, sie von der Seite zu laden oder vor ADB-Sicherungen.
quelle
Deaktivieren Sie für Android Marshmallow und Oxygen 3.0.2 das Popup "Bildschirmlayout"
Gehen Sie zu Apps und konfigurieren Sie Apps und wählen Sie Über andere Apps zeichnen.
Wählen Sie die App aus, um sie zu deaktivieren und die Blockierung der App für die Bildschirmlayout-Speicherung aufzuheben. und die App kann direkt Berechtigungen erhalten
Rufen Sie die entsprechende App und Berechtigungen auf und aktivieren Sie die gewünschten Berechtigungen.
Genießen
Raj
quelle