투케이2K

846. (Android/Java) [유틸 파일] getScheduleExactAlarmPermissionEnable : 스케줄 및 알람 설정 권한 확인 본문

Android

846. (Android/Java) [유틸 파일] getScheduleExactAlarmPermissionEnable : 스케줄 및 알람 설정 권한 확인

투케이2K 2024. 8. 22. 20:39

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

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

        /**
         * -------------------------------------------
         * [호출 방법]
         *
         * 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 android:name="android.permission.USE_EXACT_ALARM" />
         *
         * -------------------------------------------
         * [참고 사항] :
         *
         * <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> 권한은
         * Android 13 이상 부터 사전 부여 상태가 되지 않으니 사전 해당 권한 체크 필요
         * -------------------------------------------
         * [참고 사이트] :
         *
         * https://developer.android.com/about/versions/14/changes/schedule-exact-alarms?hl=ko
         * -------------------------------------------
         * */

        // [Context 지정]
        context = mContext;

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

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

        // [로직 처리 수행 실시]
        try {

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){

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

                // [OS 13 미만은 사전 부여 상태로 true 변경]
                resultData = true;
            }

        }
        catch (Exception e){
            S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
        }

        // ===============================================================
        S_Log._F_(mContext, "스케줄 및 알람 설정 권한 부여 상태 확인", new String[]{
                "OS Version :: " + String.valueOf(osVersion),
                "RETURN :: " + String.valueOf(resultData)
        });
        // ===============================================================

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

[결과 출력]

 

W///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_Permission.getScheduleExactAlarmPermissionEnable(C_Permission.java:1719)]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-08-22 13:20:16 목요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 스케줄 및 알람 설정 권한 부여 상태 확인]
I/: ----------------------------------------------------
I/: [LOG :: OS Version :: 14]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: true]
W///===========//: ================================================

 

반응형
Comments