Notice
Recent Posts
Recent Comments
Link
투케이2K
266. (TWOK/ERROR) [Android] needs to hold permission SCHEDULE_EXACT_ALARM or USE_EXACT_ALARM - 알람 권한 본문
투케이2K 에러관리
266. (TWOK/ERROR) [Android] needs to hold permission SCHEDULE_EXACT_ALARM or USE_EXACT_ALARM - 알람 권한
투케이2K 2024. 8. 22. 20:46[환경 설정 및 설명]
프로그램 : AndroidStudio
설 명 : [Android] needs to hold permission SCHEDULE_EXACT_ALARM or USE_EXACT_ALARM - 알람 권한
[에러 원인]
1. MqttAndroidClient 라이브러리를 사용해 MQTT connect 및 subscribe 구독 수행 시 앱 사용 추가 권한이 필요해 발생하는 이슈
E/AndroidRuntime: FATAL EXCEPTION: MQTT Rec: paho573505452019
Process: com.example.app, PID: 22951
java.lang.SecurityException: Caller com.example.app needs to hold android.permission.SCHEDULE_EXACT_ALARM or android.permission.USE_EXACT_ALARM to set exact alarms.
at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
at android.os.Parcel.createException(Parcel.java:3053)
at android.os.Parcel.readException(Parcel.java:3036)
at android.os.Parcel.readException(Parcel.java:2978)
at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:347)
[해결 방법]
1. 안드로이드 14 기준 : AndroidManifest.xml 파일에 권한 추가 실시
<!-- ============================================================= -->
<!-- [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" />
2. MqttAndroidClient 라이브러리 MQTT Connection 및 subscribe 수행 시 사전) 안드로이드 13 이상 SCHEDULE_EXACT_ALARM 권한 부여 상태 확인
// [OS 13 이상은 사전 부여 되지 않은 상태로 권한 부여 상태 체크 필요] >> [권한 미부여시 Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM 인텐트 이동]
AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
boolean isGrant = alarmManager.canScheduleExactAlarms();
반응형
'투케이2K 에러관리' 카테고리의 다른 글
Comments