안드로이드 개발 중 API23(Marshmallow)-안드로이드6.0부터 화면 오버레이 권한 설정을 Manifest의 입력만으론 사용하지 못하게 막아 놓았다..


직접적으로 SYSTEM_ALERT_WINDOW 권한 사용을 하지 않도록 권고하도록 바뀜.




오버레이 설정 때문에 발생한 문제점


- 오버레이 뷰가 실행이 안됨


Service로 뷰를 실행시키는 것에 대해서 실행자체가 안되어 버리니 해결방법 필요



1. 안드로이드6.0에 대응하도록 코드 변경


 Manifest에 권한 설정


<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />



 Intent 연결 추가


Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQ_CODE_OVERLAY_PERMISSION);


안드로이드 6.0에서 제공하는 API로 사용해야 Settings.ACTION_MANAGE_OVERLAY_PERMISSION 구문에 오류가 없음


REQ_CODE_OVERLAY_PERMISSION : 상수



2. 기존 안드로이드 버전을 쓰면서 계속 개발을 이어 나간다면,

   앱을 사용하는 사용자에게 권한 설정을 권고, 공지


- LG계열 스마트폰


설정->일반->앱->앱 설정->해당 앱 다른앱 위에 그리기 허용



설정 열기를 선택하여 ‘블루라이트’ 앱의 다른 앱 위에 그리기 허용을 Off 한 후에 앱 권한을 변경하세요.



-삼성계열 스마트폰


설정-애플리케이션 관리자 - 더보기 - 다른 앱 위에 표시되는 앱 - 해당 앱 ON   


다른 앱 위에 그리기에 대한 이미지 검색결과





중국 스마트 폰 허용 설정



 * VIVO


 i Manager를 실행 -> App manager 선택 -> Floating window management를 선택 -> 해당 앱 ON


 * XIAOMI(샤오미폰)


  일반적인 안드로이드 폰과 같음 . Display pop-up window Run-time Permission 허용 


 * HWAWEI (화웨이폰)


  Phone Manage 앱 실행 -> Dropzone management를 ON으로 설정


 * OPPO


   Security App 실행 -> Privacy Permission 선택 -> Floating Window Management 선택 -> 앱 ON








+ Recent posts