Czy istnieje sposób na określenie, która aplikacja rysuje się na innych aplikacjach?
Na przykład aplikacja Facebook Messenger może narysować bąbelki czatu na wierzchu wszystkiego, ale skąd mam wiedzieć, która aplikacja to robi?
Mój problem:
Mam aplikację wyświetlającą reklamy i chcę wiedzieć, która aplikacja to robi. Nie tylko odinstalować, ale ostrzec wszystkich, którzy korzystają z tej aplikacji. (Ostatnio nie instalowałem żadnej aplikacji i sprawdziłem już najnowsze aktualizacje).
Próbowałem użyć Hierarchii widoku zrzutu dla Automatu interfejsu użytkownika z Android Studio, ale wygląda na to, że nie można w ten sposób wybrać aplikacji rysujących się na górze.
(Kliknij obraz, aby powiększyć)
applications
overlay
andreroggeri
źródło
źródło
Odpowiedzi:
Uwaga:
Edycja: wytnij łańcuch we wcześniejszym rozwiązaniu i postępuj tylko według tej edytowanej sekcji.
Skonfiguruj adb i uruchom następujące polecenie:
Otrzymasz wynik wszystkich aktywnych nakładek na ekranie. Przykład wyjścia z DU Screen Recorder, Tasker i AZ Screen Recorder pokazującymi aktywne nakładki na ekranie:
Podświetlony tekst obok paczki = i przed aplikacją to nazwy pakietów aplikacji rysujących obecnie nakładkę na ekranie. W twoim przypadku dane wyjściowe zawierające nazwy pakietów będą się różnić.
Zanotuj nazwy pakietów (dalej jako PKG) i wykonaj następujące polecenie:
Zamień PKG na zanotowaną nazwę pakietu. Jeśli masz wiele nazw pakietów, powtórz polecenie z jedną nazwą pakietu na raz.
Polecenie wymusiłoby zatrzymanie aplikacji, a tym samym odrzuciło nakładkę. To powinno działać. Alternatywnie możesz usunąć uprawnienia „Rysuj nad innymi aplikacjami” (w skrócie nakładka ekranu) z aplikacji za pomocą tego polecenia:
Ponownie, w razie potrzeby zastąp PKG nazwą pakietu. Ponadto może być konieczne powtórzenie polecenia zatrzymania siły dla PKG. Jeśli zdecydujesz się cofnąć zmiany, wymień ignorować z zezwolić na wspomnianej komendy.
Alternatywnie możesz używać aplikacji do zarządzania uprawnieniami z GUI.
Aby wiedzieć, która nazwa pakietu odpowiada aplikacji, możesz wypróbować aplikację typu open source, np. Applications Info . Wyszukaj według nazwy pakietu, a otrzymasz nazwę aplikacji.
Edycja zakończona
Naprawdę nie musisz już więcej czytać . Wcześniejsze rozwiązanie (tj. Następną sekcję) pozostawiam nietknięte, ponieważ 21 osób, które głosowały, uznało to za pomocne i nie chcę już więcej zepsuć.
Prostym sposobem byłoby znalezienie wszystkich aplikacji posiadających uprawnienie „rysuj nad innymi aplikacjami”, a następnie wyróżnienie ich spośród aktualnie aktywnych na ekranie. Następnie zaangażuj się w zatrzymywanie tych popularnych aplikacji, dopóki nie wskażesz aplikacji odpowiedzialnej za aktywną nakładkę.
Wymień aplikacje mające uprawnienia do nakładki
Zezwolenie wymagane przez aplikację do utworzenia nakładki to
android.permission.SYSTEM_ALERT_WINDOW
(rysowanie nad innymi aplikacjami).Musimy znaleźć wszystkie zainstalowane aplikacje posiadające wspomniane pozwolenie. Od ciebie zależy znalezienie metody na to. Moja odpowiedź tutaj może ci pomóc.
Pamiętaj , że potrzebujemy nazw pakietów aplikacji, a nie ich etykiet.
Wybierz z aktywnych okien
Wykonaj polecenie
Dałoby to szczegółowe informacje o tym, co powoduje wyświetlanie czegoś na ekranie, w tym nazwę komponentu powodującej to aplikacji.
Sposób wyodrębnienia nazwy zależy od ciebie. Możesz jednak wypróbować to polecenie
Jeśli pojawi się błąd: „grep” nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne , w systemie Windows spróbuj wykonać to alternatywne polecenie:
Wyjście demo
W powyższym wyniku wszystko, co się powiedzie
u0
i co poprzedza,/
to nazwa pakietu aplikacji. Aplikacja może mieć wiele komponentów wyświetlających coś na ekranie.Musisz utworzyć listę tych nazw pakietów. Jeśli masz zainstalowany BusyBox , możesz to zrobić
Tak czy inaczej, teraz będziesz mieć dwie listy:
android.permission.SYSTEM_ALERT_WINDOW
.Porównaj te dwie listy i wyodrębnij aplikacje, które są wspólne na obu listach. Ta trzecia lista składałaby się z aplikacji, które mają uprawnienia do rysowania nakładki i obecnie rysują aktywną nakładkę na ekranie.
Czas zabijać
Zabijaj wszystkie aplikacje z trzeciej listy jeden po drugim i zauważ stan nakładki. Możesz użyć
am force-stop PACKAGE_NAME --user 0
dowolnej innej metody, która Ci odpowiada.PACKAGE_NAME
to nazwa pakietu aplikacji.EDYCJA : Zabicie aplikacji nie jest konieczne. Możesz rozważyć odmowę aplikacji zezwolenia na rysowanie w innych aplikacjach. Użyj tego polecenia:
Aby cofnąć zmiany, wymień zaprzeczyć ze pozwalają w tej komendzie i uruchom go.
Jeśli używasz Androida Marshmallow, możesz użyć tej odpowiedzi Andrew T.
Uwaga: wyżej wymienione polecenie zostało pomyślnie przetestowane na Androidzie 5.1.1 i 6.0.1 (kompilacje CM). Możliwe jest również, że polecenie działa na Androidzie 5.0.x, ale nie mogę tego zagwarantować . Wykonanie tego polecenia w wersji Androida wydanej przed Lollipopem spowodowałoby błąd.
Ponieważ często nakładka jest widoczna, natychmiast znika z chwilą śmierci aplikacji, która ją spowodowała, dlatego wiesz, która aplikacja spowodowała tę nakładkę.
Aplikacje na aplikacje
Pierwotnie sugerowany przez Izzy'ego, możesz użyć aplikacji, która ma funkcję wyświetlania uprawnień przyznanych zainstalowanym aplikacjom, aby wyróżnić aplikacje posiadające uprawnienie „rysuj nad innymi aplikacjami”. Możesz przeszukać taką aplikację samodzielnie lub skorzystać z listy Sprawdzanie uprawnień prowadzonej przez Izzy'ego na jego stronie internetowej.
Potrzebujesz także menedżera procesów / aplikacji, aby wymusić zatrzymanie / zabicie niektórych procesów. Polecam OS Monitor, ale możesz swobodnie korzystać z dowolnej kompetentnej aplikacji. Zobacz powiązane aplikacje w obszarze Informacje o systemie .
Tylko w celach demonstracyjnych
Próbowałem Advanced Permission Manager, aby wyświetlić listę aplikacji z uprawnieniami do „rysowania nad innymi aplikacjami”. Następnie przełączyłem się na OS Monitor, aby zobaczyć aplikacje działające na pierwszym planie i w tle. Dopasowałem dane wyjściowe z obu aplikacji i indywidualnie wymusiłem zatrzymanie aplikacji wspólnych w obu. Możesz zabić proces z poziomu Monitora systemu operacyjnego, więc nie musisz przełączać się do ustawień aplikacji.
(Kliknij obraz, aby powiększyć)
źródło
Jeśli używasz Androida 6.0 Marshmallow, możesz użyć jego natywnego menedżera uprawnień.
Z artykułu na BGR ,
Aby wyświetlić listę aplikacji, które mogą rysować na innych aplikacjach, przejdź do Ustawienia - Aplikacje - Zaawansowane (menu z ikoną koła zębatego) - Rysuj na innych aplikacjach .
Możesz także włączyć / wyłączyć tę funkcję tymczasowo, dotykając aplikacji i przełączając opcję „Zezwalaj na rysowanie nad innymi aplikacjami”.
Zdjęcie dzięki uprzejmości Sebastiano Gottardo na Medium
źródło
Wielkie dzięki @Firelord! W końcu znalazłem aplikację, która uniemożliwiała mi instalację apk i wykonywanie kopii zapasowych adb.
Dla mnie odkryłem, że była to aplikacja o nazwie
Battery Mix
Czytaj dalej, aby zobaczyć, co zrobiłem i jak to zrobiłem.https://play.google.com/store/apps/details?id=jp.smapho.battery_mix
Wiele osób miało problemy z instalacją aplikacji i nie było w stanie nacisnąć „Instaluj”. Wszystkie odpowiedzi, które mogłem znaleźć, dotyczyły głównie aplikacji do przyciemniania, przyciemniania i oszczędzania energii. Ponieważ nie korzystałem z żadnej aplikacji lub usunąłem wszystkie podobne aplikacje, starałem się znaleźć to, co się dzieje i która z nich była sprawcą. I w końcu! Po jednym prostym poleceniu i szybkim wyszukiwaniu zostało rozwiązane: D
Obraźliwa aplikacja
Battery Mix
to prosta aplikacja do monitorowania baterii, która miała funkcję, której użyłem do wyświetlenia cienkiej linii w górnej części ekranu, aby pokazać stan naładowania baterii (świetna mała aplikacja).Aby zdiagnozować, użyłem polecenia z
Firelord
(powyżej), aby zrzucić plik tekstowy, a następnie wyszukać aplikację, która spowodowała, że system Android nie pozwolił mi kliknąć tego przycisku instalacji.Wykonaj polecenie z komputera
adb shell dumpsys window windows > dumpsys-windows.txt
Szukać
SYSTEM_ALERT_WINDOW
Aby znaleźć szkodliwe aplikacje, szukałem powyższego ciągu
Co dało mi linię:
mOwnerUid=10129 mShowToOwnerOnly=true package=jp.smapho.battery_mix appop=SYSTEM_ALERT_WINDOW
(Zobacz przesyłanie obrazu do sekcji pliku tekstowego)
natychmiast rozpoznałem, do której aplikacji się odnosi: jp.smapho. bateria_mix
Teraz wiem, jak zabić tę aplikację, ilekroć planuję sideload lub przed tworzeniem kopii zapasowych adb.
źródło
W Androidzie Marshmallow i Oxygen 3.0.2, wyskakujące okno Wyłącz układ ekranu
Przejdź do Aplikacje i skonfiguruj Aplikacje i Wybierz Rysuj w stosunku do innych aplikacji.
Idź i wybierz aplikację, aby ją wyłączyć, aby aplikacja została odblokowana z poziomu układu ekranu. a aplikacja może bezpośrednio uzyskać uprawnienia
Przejdź do odpowiedniej aplikacji i uprawnień i włącz odpowiednie uprawnienia.
Cieszyć się
Raj
źródło