노트 :
- adb 는 이미 PC에 설정되어 있어야합니다.
- 4.4.x 이전의 Android의 경우 루트 액세스가 필요할 수 있습니다.
- 일부 명령은 5.1 이전 버전의 Android에서는 작동하지 않습니다.
- 명령 줄에 익숙하지 않거나 불편한 경우 또는 명령 줄로 문제를 해결하지 못하면 " 앱용 앱 "으로 이동 하십시오.
편집 : 이전 솔루션에서 추적을 자르고이 편집 된 섹션 만 따르십시오.
adb를 설정 하고 다음 명령을 실행하십시오.
adb shell "dumpsys window windows | toybox grep -i system_alert_window"
화면에서 모든 활성 오버레이 의 출력을 얻을 수 있습니다. DU Screen Recorder, Tasker 및 AZ Screen Recorder를 사용하여 화면에 활성 오버레이를 표시하는 출력의 예 :
bash-4.3 # adb shell "dumpsys 창 windows | toybox grep -i system_alert_window"
mOwnerUid = 10087 mShowToOwnerOnly = true 패키지 = net.dinglisch.android.tasker appop = SYSTEM_ALERT_WINDOW
mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrecorder.free appop = SYSTEM_ALERT_WINDOW
mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrecorder.free appop = SYSTEM_ALERT_WINDOW
mOwnerUid = 10649 mShowToOwnerOnly = true package = com.duapps.recorder appop = SYSTEM_ALERT_WINDOW
mOwnerUid = 10649 mShowToOwnerOnly = true package = com.duapps.recorder appop = SYSTEM_ALERT_WINDOW
mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrecorder.free appop = SYSTEM_ALERT_WINDOW
mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrecorder.free appop = SYSTEM_ALERT_WINDOW
mOwnerUid = 10638 mShowToOwnerOnly = true 패키지 = ninja.sesame.app.edge appop = SYSTEM_ALERT_WINDOW
package = 옆 과 appop 앞에 강조 표시된 텍스트 는 현재 화면에 오버레이 로 표시 되는 앱의 패키지 이름 입니다. 귀하의 경우 패키지 이름을 포함한 출력이 다를 수 있습니다.
패키지 이름 (이후 PKG)을 기록하고 다음 명령을 실행하십시오.
adb shell am force-stop PKG
적어 둔 패키지 이름으로 PKG 를 교체하십시오 . 패키지 이름이 여러 개인 경우 한 번에 하나의 패키지 이름으로 명령을 반복하십시오.
이 명령은 앱을 강제로 중지하여 오버레이를 삭제합니다. 이 작동합니다. 이 명령을 사용하여 앱에서 "다른 앱 위에 그리기"(화면 오버레이가 짧게) 권한을 제거 할 수도 있습니다.
adb shell appops set PKG SYSTEM_ALERT_WINDOW ignore
필요에 따라 PKG를 패키지 이름으로 바꾸십시오. 또한 PKG에 대해 강제 정지 명령을 반복해야 할 수도 있습니다. 변경 사항을 복귀하기로 결정하는 경우, 대체 무시 로 수 있도록 상기 명령.
또는 App Ops 를 사용하여 GUI의 권한을 관리 할 수 있습니다.
어떤 패키지 이름이 어떤 앱에 해당하는지 알기 위해 Applications Info 와 같은 오픈 소스 앱을 사용해 볼 수 있습니다. 패키지 이름으로 검색하면 앱 이름이 표시됩니다.
편집 완료
이제 더 이상 읽을 필요가 없습니다 . 투표에 참여한 21 명이 도움이되고 더 이상 엉망으로 만들고 싶지 않기 때문에 이전 솔루션 (즉, 다음 섹션)을 그대로 둡니다.
간단한 방법은 "다른 앱 위로 끌어 오기"권한이있는 모든 앱을 찾은 다음 현재 화면에서 활성화 된 앱에서 해당 앱을 찾아내는 것입니다. 그런 다음 활성 오버레이를 담당하는 앱을 정확히 지적 할 때까지 해당 공통 앱을 강제 중지하십시오.
오버레이 권한이있는 앱 열거
앱이 오버레이를 생성하는 데 필요한 권한은 android.permission.SYSTEM_ALERT_WINDOW
(다른 앱을 통해 인출)입니다.
해당 권한이있는 설치된 모든 앱을 찾아야합니다. 이에 대한 방법을 찾는 것은 당신에게 달려 있습니다. 여기에 내 대답 이 도움이 될 수 있습니다.
주 우리는 애플 리케이션 '필요 패키지 이름 이 아닌 자신의 레이블을.
활성 창에서 체리 픽
명령을 실행
adb shell dumpsys window windows
그러면 앱을 일으키는 앱의 구성 요소 이름을 포함하여 화면에 표시되는 원인에 대한 세부 정보가 제공됩니다.
이름을 추출하는 방법은 당신에게 달려 있습니다. 그러나이 명령을 시도 할 수 있습니다
adb shell 'dumpsys window windows | grep "Window #"'
당신이 오류가 발생하는 경우 : 내부 또는 외부 명령으로 인식되지 않는 '그렙' Windows에서이 대안 명령을 시도 :
adb shell "dumpsys window windows | grep 'Window #'"
데모 출력
창 # 4 창 {42065d50 u0 com.android.phone/com.mediatek.phone.UssdAlertActivity} :
창 # 5 창 {42197468 u0 ginlemon.flowerpro / ginlemon.flower.HomeScreen} :
창 # 6 창 {420fdb58 u0 com.android.systemui.ImageWallpaper} :
창 # 7 창 {421e3b88 u0 com.android.contacts / com.android.contacts.activities.DialtactsActivity} :
위 출력에서 성공 u0
및 선행 /
은 앱의 패키지 이름입니다. 앱에는 화면에 무언가를 표시하는 여러 구성 요소가있을 수 있습니다.
해당 패키지 이름 목록을 작성해야합니다. 당신이 경우 비지 박스가 설치되어 , 당신은 할 수있다
adb shell 'dumpsys window windows | grep "Window #" | sed -e "s/.*u0 //g" -e "s/\/.*//g" -e "s/}://g"'
어쨌든, 이제 두 가지 목록이 생깁니다.
- 첫 번째 목록에는 권한이있는 모든 앱이 포함됩니다
android.permission.SYSTEM_ALERT_WINDOW
.
- 두 번째 목록에는 화면에 무언가를 실제로 표시하는 모든 앱이 포함됩니다.
이 두 목록과 두 목록에서 공통적 인 단일 앱을 비교하십시오. 이 세 번째 목록은 오버레이 그리기 권한이 있으며 현재 화면에 활성 오버레이를 그리는 앱으로 구성됩니다.
죽일 시간
세 번째 목록에서 각 앱을 하나씩 종료하고 오버레이 상태를 확인하십시오. 귀하 am force-stop PACKAGE_NAME --user 0
에게 적합한 다른 방법을 사용할 수 있습니다 . PACKAGE_NAME
앱의 패키지 이름입니다.
편집 : 앱을 죽일 필요는 없습니다. 앱에 다른 앱을 그릴 수있는 권한을 거부 할 수 있습니다. 이 명령을 사용하십시오 :
adb shell 'appops set PACKAGE SYSTEM_ALERT_WINDOW deny' # replace PACKAGE with package name of the app
변경 사항을 되돌리려면 해당 명령에서 deny 를 allow 로 바꾸고 실행하십시오.
Android Marshmallow를 실행중인 경우 Andrew T. 의이 답변 을 사용할 수 있습니다.
참고 : 위에 언급 된 명령은 Android 5.1.1 및 6.0.1 (CM 빌드)에서 성공적으로 테스트되었습니다. 명령이 Android 5.0.x에서 작동 할 수도 있지만 보장 할 수는 없습니다 . Lollipop 이전에 출시 된 Android 버전에서 해당 명령을 실행 하면 오류가 발생합니다.
오버레이는 종종 인식 가능하기 때문에 앱을 중단시키는 순간 앱이 즉시 사라 지므로 어떤 앱이 해당 오버레이를 유발했는지 알 수 있습니다.
앱용 앱
원래 Izzy에서 제안한대로 설치된 앱에 부여 된 권한을 나열하는 기능이있는 앱을 사용하여 "다른 앱을 넘길 수있는"권한이있는 앱을 선택할 수 있습니다. 이러한 앱을 직접 검색하거나 웹 사이트에서 Izzy가 유지 관리하는 권한 검사기 목록을 사용할 수 있습니다.
또한 일부 프로세스를 강제 중지 / 종료하려면 프로세스 / 앱 관리자가 필요합니다. OS Monitor를 권장 하지만 유능한 앱을 자유롭게 사용할 수 있습니다. 시스템 정보 에서 관련 앱을 참조 하십시오 .
데모 목적으로 만
"다른 앱을 넘길 수있는"권한이있는 앱을 나열하기 위해 고급 권한 관리자 를 시도했습니다 . 그런 다음 OS 모니터로 전환하여 포 그라운드 및 백그라운드에서 실행되는 앱을 확인했습니다. 두 앱의 출력을 일치시키고 두 앱에서 공통으로 사용되는 앱을 개별적으로 강제 중지했습니다. OS 모니터 내부에서 프로세스를 종료 할 수 있으므로 앱 설정으로 전환 할 필요가 없습니다.
(이미지를 클릭하면 확대됩니다)