Android O에서 백그라운드 앱 및 오버레이에 대한 영구 알림 숨기기

백그라운드 앱이 실행 중이거나 오버레이가 표시될 때 표시되는 Android O의 지속적인 알림을 숨기는 방법에 대한 튜토리얼입니다.

업데이트 8/25/17: Google이 백그라운드에서 지속적인 알림을 숨기는 데 사용하는 방법을 패치했기 때문에 이 튜토리얼은 이제 더 이상 사용되지 않습니다. 그러나 우리는 이 문제에 대한 또 다른 해결 방법을 발견했으며 이에 대한 간단한 튜토리얼을 작성했습니다. 여기서 찾을 수 있어요.

Android O는 우리 모두가 알고 사랑하는 Android OS에 주요 개선 사항을 제공하려고 합니다. 휴대폰용 PIP(Picture-in-Picture) 모드, 알림 채널, 스마트 텍스트 선택, 자동 완성 서비스 및 내부적으로는 배터리 수명, 성능 및 보안을 향상시키기 위한 수많은 변경 사항이 있습니다. 사용자가 배터리 수명 및 성능 문제를 해결하는 데 도움이 되는 기능 중 하나는 백그라운드 프로세스 제한입니다. 너무 자세히 설명하지 않으면 Android O의 앱은 등록된 매니페스트에서 더 이상 깨어날 수 없습니다. 암시적 브로드캐스트 수신기를 거치지 않고는 더 이상 백그라운드 서비스를 시작할 수 없습니다. JobScheduler. 앱이 백그라운드 서비스를 시작하려는 경우 알림을 게시하여 사용자에게 명시적으로 알려야 합니다. 그러나 앱이 백그라운드에서 실행 중일 때 Android O는 이제 겉보기에 다른 작업을 수행하는 것처럼 보입니다. 또 다른 어떤 앱이 실행 중인지 알려주는 지속적인 알림입니다. 이는 다음과 같은 앱이 있는 경우에도 발생합니다. SYSTEM_ALERT_WINDOW 허가(예: 인기 있는 어스름 앱)은 현재 오버레이를 표시하고 있습니다.

백그라운드 및 오버레이 앱에 대한 Android O 지속적인 알림. 크레딧: 벤 Schoon \\ 나인투파이브구글

이러한 알림은 기본적으로 최소화되어 있지만 사용자가 취소하거나 설정에서 영구적으로 차단할 수는 없습니다. 이 동작은 많은 사용자에게 매우 짜증나는 일이므로 Google이 최종 Android O/Android 8.0 릴리스에서 이 알림을 비활성화할 수 있는 방법을 제공하기를 진심으로 바랍니다. 그러나 그렇지 않은 경우에는 

~이다 아직 갈 길이 멀다 지속적인 백그라운드 앱 알림을 영구적으로 숨기기. 단계별 가이드를 통해 이를 수행하는 방법을 보여주고, 이어서 작동 방식에 대한 설명과 중요한 주의사항을 설명하겠습니다.


요구사항:

  • 안드로이드 O
  1. Windows를 사용하는 경우 특정 휴대폰에 대한 USB 드라이버를 설치합니다(찾을 수 있음). 여기).
  2. 다운로드 ADB 바이너리 특정 운영 체제(윈도우, , 리눅스). 이러한 링크는 항상 최신 버전의 바이너리를 가리키므로 최신 버전을 찾기 위해 인터넷을 뒤질 필요가 없습니다.
  3. 다운로드한 ZIP 파일의 내용을 PC에서 쉽게 액세스할 수 있는 폴더(예: 다운로드 폴더)에 추출합니다.
  4. 휴대폰의 설정 앱으로 이동하여 "휴대폰 정보" 옵션을 탭하세요.
  5. 빌드 번호를 찾아 7번 탭하면 개발자 모드가 활성화됩니다. 활성화되면 팝업이 표시됩니다.
  6. 설정 메인 메뉴로 돌아가서 개발자 옵션에 들어가서 USB 디버깅 모드를 활성화하세요.
  7. 휴대폰을 PC에 연결하고 알림 패널을 아래로 스와이프하여 USB 모드를 "충전 전용"에서 "파일 전송(MTP)" 모드로 변경합니다. 귀하의 전화기에는 이것이 필요하지 않을 수도 있습니다.
  8. PC에서 ADB 바이너리를 추출한 디렉터리로 이동합니다.
  9. 이 ADB 디렉터리에서 명령 프롬프트/터미널을 실행합니다. Windows 사용자의 경우 Shift+마우스 오른쪽 버튼을 클릭한 다음 "여기에서 명령 프롬프트 열기" 옵션을 선택하여 이 작업을 수행할 수 있습니다.
  10. 명령 프롬프트 또는 터미널 환경에 있으면 다음 명령을 입력하십시오. adb devices
  11. 그러면 ADB 데몬이 시작됩니다. ADB를 처음 실행하는 경우 휴대폰에 연결 승인을 요청하는 메시지도 표시됩니다.
  12. 이제 10단계의 adb devices 명령을 다시 실행하면 명령 프롬프트/터미널에 장치의 일련 번호가 인쇄됩니다. 그렇다면 계속 진행할 준비가 된 것입니다. 그렇지 않으면 USB 드라이버가 제대로 설치되지 않았을 가능성이 높습니다.
  13. 명령 프롬프트로 돌아가서 다음 명령을 입력합니다. adb shell
  14. 이제 다음 명령을 실행하십시오. cmd appops set android POST_NOTIFICATION ignore
  15. 성공 메시지나 기타 어떤 것도 받지 못하지만 오류가 표시되지 않는 한 제대로 작동했을 것입니다. 이제 휴대폰을 재부팅하면 됩니다!

    예, 스크린샷이 아닌 휴대폰 화면 사진이라는 것을 알고 있습니다. 저는 안드로이드 O 호환 기기가 없어서 TK에게 이미지를 보내달라고 요청했습니다.

  16. 이 명령을 되돌리려면 명령 프롬프트에 다음을 입력하십시오. cmd appops set android POST_NOTIFICATION allow

작동 원리

Android의 사용자 대상 권한 관리 시스템인 App Ops의 숨겨진 명령줄 인터페이스를 사용하여 "android" 패키지에서 POST_NOTIFICATION 권한을 제한할 수 있습니다. (참고: "거부"로 인해 일부 오류가 발생할 수 있으므로 "거부" 대신 "무시"로 설정했습니다.) 관련 소스 코드를 보고 이 권한을 찾았습니다. 앱운영관리자에는 부여/취소할 수 있는 모든 권한이 나열되어 있으며, 그 중 대부분은 Android 설정에서 액세스할 수 없습니다. "android" 패키지는 실제로 "Android 시스템"(AKA Framework-res.apk)을 참조하며, 이는 우리가 제거하려는 지속적인 알림을 담당합니다.

본질적으로 Android 시스템의 POST_NOTIFICATION 권한을 취소하면 더 이상 알림을 표시할 수 없습니다! 꽤 간단하게 들리죠? 불행히도, 주의해야 할 사항이 있습니다. 'Android 시스템'은 이 알림 이상의 역할을 담당하므로 게시될 수 있는 다른 알림은 더 이상 표시되지 않습니다. 여기에는 USB 모드 알림(개발자 옵션의 설정을 통해 변경할 수 있음)과 기타 사항이 포함될 수 있습니다.

이는 우리 측에서 취할 수 있는 매우 과감한 조치이지만 현재로서는 이 알림을 숨길 수 있는 유일한 방법입니다. 전화기를 루팅하고 프레임워크 자체를 수정하는 것은 분명히 많은 사용자가 의향하거나 할 수 없는 일입니다. 할 것. 저는 Google이 Android O의 향후 릴리스에서 이 알림을 숨길 수 있는 방법을 제공하거나 이 알림을 완전히 제거하는 방법을 제공하기를 진심으로 바랍니다. Google은 앱이 백그라운드에서 실행 중일 때 사용자에게 이를 알려 사용자 환경을 개선하고자 합니다. 사용자는 인식하지 못할 수도 있지만, 각 앱에 대해 알고 있는 우리에게는 그들이 선택한 방법이 짜증스럽습니다. 사용.