Foggy day

[Android] SYSTEM_ALERT_WINDOW 권한 획득 본문

Android

[Android] SYSTEM_ALERT_WINDOW 권한 획득

jinhan38 2023. 9. 26. 22:56

 

android.permission.SYSTEM_ALERT_WINDOW 권한은 overlay View를 사용하기 위해 필요합니다. 

 

 

1. manifest 에 permission 추가

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

 

 

 

2. 런타임 권한 요청

checkPermissionOverlay 함수로 권한을 요청하면 권한 허용 시스템 창으로 이동하게 됩니다. 

그리고 다시 화면으로 돌아왔을 때 onActivityResult에서 권한을 허용 했는지 아닌지 확인할 수 있습니다. 


const val overlayPermission = 100

....

private fun checkPermissionOverlay(): Boolean {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (Settings.canDrawOverlays(this)) return true
        val intent = Intent(
            Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
            Uri.parse("package:$packageName")
        )
        startActivityForResult(intent, overlayPermission)
    }
    return true
}

....

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (requestCode == overlayPermission) {
            if (!Settings.canDrawOverlays(this)) {
                // 아직 허용 안 함
            }
        }  
    }
}