[Android] 다른 앱 위에 그리기 권한: TYPE_APPLICATION_OVERLAY
[다른 앱 위의 그리기]는 폰 설정 > 애플리케이션 > 앱 > 고급 [다른 앱 위에 표시되는 앱]에서 권한 설정할 수 있다.

퍼미션
[다른 앱 위에 그리기] 설정을 추가하려면 Manifest에 이를 사용하겠다고 퍼미션을 추가해야하는데,
1  | <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>  | 
권한: 다른 앱 위에 그리기(Draw over other apps / Appear on top)
위 퍼미션을 추가하면 앱 설정(설정>애플리케이션>해당 앱)에 [다른 앱 위에 그리기] 정보가 뜬다. (안드로이드 버전마다 언어:영어일 때의 표시나 노출 위치는 다를 수 있다.)
중요한 것은 [다른 앱 위에 그리기]의 기본값이 버전마다 다르다는 건데,
- API level 23(Android 6.0 Marshmallow) 미만에서는 true
 - 그 이상에서는 false
 
앱스토어에서 설치할 경우 기본적으로 위와 같이 설정되어 유저의 단말에 설치됨을 숙지하여 기능구현 프로세스를 짜야한다.
버전 체크 방법

[다른 앱 위에 그리기] 기능이 필요할 경우 API level 23 이상에서는 버전 체크 처리를 해주어야한다.
1  | /* REQ_CODE_OVERLAY_PERMISSION는 임의로 정한 상수  | 
덧붙여 [다른 앱 위에 그리기] 설정값이 true인지 확인하는 방법은 다음과 같다.
1  | public static boolean alertPermissionCheck(Context context) {  | 
주의: deprecated 된 WindowManager.LayoutParams의 플래그
- TYPE_PHONE
 - TYPE_PRIORITY_PHONE
 - TYPE_SYSTEM_ALERT
 - TYPE_SYSTEM_ERROR
 - TYPE_SYSTEM_OVERLAY
 - TYPE_TOAST
 
위에 나열된 타입은 API level 26(Android 8.0 Oreo)에 deprecated 되어 아래와 같이 Android Developer 에서는 이것들 대신 TYPE_APPLICATION_OVERLAY를 쓰도록 가이드 하고 있다.

1  | val param: WindowManager.LayoutParams  | 
[Android] 다른 앱 위에 그리기 권한: TYPE_APPLICATION_OVERLAY
https://dl137584.github.io/2022/02/09/013-type-application-overlay/