<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
private boolean checkAlarmRemainderPermission() {
boolean result = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if (alarmManager.canScheduleExactAlarms()) { // 권한이 있다면 true를 반환합니다.
result = true;
}
} else { // 나머지 버전은 해당사항 없습니다.
result = true;
}
return result;
}
private void showSettingAlarmReminder() {
Intent appDetail = new Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM, Uri.parse("package:" + getPackageName()));
appDetail.addCategory(Intent.CATEGORY_DEFAULT);
appDetail.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(appDetail);
}
위에 그림처럼 권한을 허용해준 상태에서 앱 재진입시 스케줄 등록은 문제없이 동작한다. 하지만 사용자가 앱 설정에서 알람 및 리마인더 설정 허용을 중지할 수 있다.
(물론 그렇게까지 하는분이...)사용자가 중지를 했다는 가정을 하고 앱 재진입시 lifeCycle이 정상적으로 동작하지 않고 UI에 셋팅되어 있던 값들도 함께 날아가는 문제를 찾았다.