투케이2K

521. (kotlin/코틀린) [유틸 파일] getScheduleExactAlarmPermissionEnable : Android 13 : 스케줄 및 알람 설정 권한 확인 본문

Kotlin

521. (kotlin/코틀린) [유틸 파일] getScheduleExactAlarmPermissionEnable : Android 13 : 스케줄 및 알람 설정 권한 확인

투케이2K 2024. 8. 26. 09:09

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [getScheduleExactAlarmPermissionEnable] : [Android 13] : [스케줄 및 알람 설정 권한 확인]
        // -----------------------------------------------------------------------------------------
        fun getScheduleExactAlarmPermissionEnable(mContext: Context): Boolean {

            /**
             * -------------------------------------------
             * [호출 방법]
             *
             * C_Permission.getScheduleExactAlarmPermissionEnable(A_Intro@this)
             * -------------------------------------------
             * 1. 필요 퍼미션 :
             *
             *     <!-- ============================================================= -->
             *     <!-- [MQTT 통신 사용 스케줄 및 알람 관리] -->
             *     <!-- ============================================================= -->
             *     <!-- [SCHEDULE_EXACT_ALARM : 안드로이드 12 이상 선언 필요] : [13 이상 alarmManager.canScheduleExactAlarms() 권한 부여 상태 체크 필요] -->
             *     <!-- ============================================================= -->
             *     <!-- [USE_EXACT_ALARM : 안드로이드 14 이상 선언 필요] -->
             *     <!-- ============================================================= -->
             *     <!-- [주의] : USE_EXACT_ALARM 권한은 캘린더 및 알람 시계 앱 목적으로 제작 된 앱이 사용할 수 있다 -->
             *     <!-- 참고 : 앱은 정책 언어 에 따라 적격을 갖추지 않는 한 매니페스트에서 이 권한이 있는 버전의 앱을 게시할 수 없습니다 -->
             *     <!-- ============================================================= -->
             *     <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"></uses-permission>
             *     <uses-permission android:name="android.permission.USE_EXACT_ALARM"></uses-permission>
             *
             * -------------------------------------------
             * [참고 사항] :
             *
             * <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"></uses-permission> 권한은
             * Android 13 이상 부터 사전 부여 상태가 되지 않으니 사전 해당 권한 체크 필요
             * -------------------------------------------
             * [참고 사이트] :
             *
             * https://developer.android.com/about/versions/14/changes/schedule-exact-alarms?hl=ko
             * -------------------------------------------
             */

            // [Context 지정]
            context = mContext

            // [초기 리턴 변수 선언]
            var resultData = false

            // [OS 버전 확인 실시]
            var osVersion = ""
            try { osVersion = Build.VERSION.RELEASE } catch (ex: Exception) { ex.printStackTrace() }

            // [로직 처리 수행 실시]
            try {
                resultData = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {

                    // [OS 13 이상은 사전 부여 되지 않은 상태로 권한 부여 상태 체크 필요]
                    val alarmManager = mContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
                    alarmManager.canScheduleExactAlarms()

                } else {

                    // [OS 13 미만은 사전 부여 상태로 true 변경]
                    true
                }
            } catch (e: Exception) {
                S_Log._printStackTrace_(mContext, S_FinalData.LOG_BUG_STATE, null, e)
            }

            // ===============================================================
            S_Log._F_(mContext, "스케줄 및 알람 설정 권한 부여 상태 확인", arrayOf(
                "OS Version :: $osVersion",
                "RETURN :: $resultData"
            ))
            // ===============================================================

            // [결과 리턴 실시]
            return resultData
        }

 

반응형
Comments