본문 바로가기
안드로이드(kotlin)

잠금 화면 위에 Activity 열기 - 안드로이드 13 대응

by 기계공학 주인장 2023. 2. 28.
반응형

안드로이드13 잠금화면 위에 Activity 열기

안드로이드 12로 넘어오면서 잠금화면 위로

 

Activity를 열기 위해선 특별한 권한 추가 및 동작하는 방법이 조금 바뀌었다.

 

해당 방법을 빠르고 간단하게 알아보겠다

 

잠금 화면 위에 Activity 열기 - 안드로이드 13 대응


안드로이드13에서 잠금화면 위에 Activity를 띄우는 방법

안드로이드13에서 잠금화면 위에 Activity를 띄우기 위해선 먼저 androidManifest를 수정해야한다.

다음과 같이 androidManifest.xml을 수정한다.

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

<!-- 대상이 되는 Activity에 다음과 같이 설정 -->
<activity
    android:name=".ui.activity.OnAlarmActivity"
    android:permission="android.permission.SYSTEM_ALERT_WINDOW"
    android:excludeFromRecents="true"
    android:exported="false"
    android:launchMode="singleTask"
    android:showOnLockScreen="true"/>

 

이후 잠금 화면 위에 띄울 Activity에 다음과 같이 정의한다

 

LockScreenOverlayActivity

onCreate()안에 다음과 같이 정의한다

// 안드12 이상에서 잠금화면 위로 액티비티 띄우기 & 화면 켜기
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    setShowWhenLocked(true)
    setTurnScreenOn(true)
    (getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).apply {
        requestDismissKeyguard(this@OnAlarmActivity, null)
    }
} else {
    this.window.addFlags(
        WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
    )
}

 

이렇게까지 하고 해당 Activitiy를 호출하면된다.


정리

  1. androidManifest.xml에 SYSTEM_ALERT_WINDOW를 추가하고 Activity에도 추가한다.
  2. Activity에서 setShowWhenLocked를 true로 설정한다.
  3. 안드로이드12 전후로 사용하는 방법이 다르다.
반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글