AudioManager를 활용하여 알림(Notification)의 모드 변경
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(mAudioManager.getRingerMode() == 0) {
//AudioManager.RINGER_MODE_SILENT (무음모드인 경우)
} else if(mAudioManager.getRingerMode() == 1) {
//AudioManager.RINGER_MODE_VIBRATE (진동모드인 경우)
} else if(mAudioManager.getRingerMode() == 2) {
//AudioManager.RINGER_MODE_NORMAL (벨 모드인 경우)
} else {
//AudioManager.ACTION_AUDIO_DECOMING_NOISTY (이어잭을 꼽고 있다고 뺀 경우)
}
//위 코드를 통해 현재 모드 상태 확인 후, 알림 모드 변경 가능
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); //벨 모드로 변경
주의) 위 코드 실행 중, SILENT에서 변경 시 java.lang.SecurityException: Not allowed to change Do Not Disturb state 오류 발생 > 방해금지모드 권한 설정 필요
해결방법) 방해금지 모드 켜져있는지 여부 확인 후, 방해금지권한 설정 페이지로 이동
//방해금지모드 켜져있는지 여부 확인하는 코드
int zenModeValue = 0;
try {
zenModeValue = Settings.Global.getInt(getContentResolver(), "zen_mode");
switch(zenModeValue) {
case 0: //방해금지모드 OFF
break;
case 1: //방해금지모드 ON (중요 알림만 허용)
break;
case 2: //방해금지모드 ON (완전 무음모드 처리)
break;
case 3: //방해금지모드 ON (경보만 알림)
break;
default;
break;
}
} catch (Settings.SettingNotFoundException e) {
zenModeValue = 0;
}
//방해금지 권한 설정 페이지로 이동하는 코드
NotificationManager mNotifyManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if(Build.VERSION_SDK_INT >= Build.VERSION_CODES.M)
&& !mNotifyManager.isNotificationPolicyAccessGranted()) {
Toast.makeText(this, "방해금지 권한을 허용해주십시오.", Toast.LENGH_LONG).show();
Intent intent = new Intnet(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivity(intent);
}
'안드로이드 > Java' 카테고리의 다른 글
[안드로이드][Java] 알림(Notification) 클릭 시, Activity 이동 (0) | 2023.02.22 |
---|---|
[안드로이드][Java] 알림(Notification) 구현 (0) | 2023.02.22 |