본문 바로가기

나의 플랫폼/안드로이드

[Android] Deprecated 'TYPE_SYSTEM_ALERT '

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android O버전 부터 TYPE_SYSTEM_ALERT 이 Deprecated 된다는 경고를 볼 수 있다.

그럴 경우 아래 소스를 참고 하기 바란다.

private fun initWindowParams() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
mParams = WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT)
} else {
mParams = WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT)
}
mParams?.gravity = Gravity.TOP or Gravity.LEFT
}


혹시 아래와 같은 BadTokenException이 발생 할 수도 있다.


permission denied for window type 2003


그럴 경우 3가지를 참고 하길 바란다.


1. 다른 앱 위에 그리기 권한을 습득 했는지...


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


2. 또는 Deprecated 된 TYPE_SYSTEM_ALERT을 사용하고 있는지


3. 혹시 KEY_GUARD_DIALOG FLAG를 사용 하고 있다는 아래 StackOverflow 내용을 참고 해보시길 바란다.


https://stackoverflow.com/a/32233473