안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드 진저브레드 2.3버젼에선 아랫줄의 코드가 정상적으로 실행이되었습니다.
Uri defaultringtone = RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext() ,RingtoneManager.TYPE_RINGTONE);
하지만 4.0이상(아이스크림샌드위치) 버젼의 기기에서 윗줄의 코드를 실행하면 null값을 리턴하더라구요
혹시 4.0이 되면서 위 코드에 관련하여 수정해야될부분이있나요??
getActualDefaultRingtoneUri()메소드를 들여다보니
String setting = Settings.System.RINGTONE;
String uriString = Settings.System.getString(con.getContentResolver(), setting);
와 같은 코드가 있는데 Settings.System.getString(con.getContentResolver(), setting); 부분에서
2.3은 제대로된 uri를 리턴하고 4.0에선 null값을 리턴하네요..
같은코드가 하위버젼에선 호환되나 상위버젼에서 에러가나니.. 답답하네요
혹시 관련 정보 알고계신분있으신가요??
아니면 ICS의 버그라고 생각해야하나요...? 버그라면 충격이네요.. 어떻게 써야할지..
사용법은 같고, 제가 가진 ICS 기기에서는 Null을 리턴하지 않네요.
그리고, Emulator에서 확인해 보니 Null을 return 하는데, 원인을 살펴보니 에뮬레이터 기본 System Image에는 /system/media/audio/ringtones 디렉토리에 ringtone 파일들이 한개도 존재하지 않아 미디어 스캐닝 중 기본 Ringtone 값을 설정할 수 없어서 Null로 남아 있게 된 것 같습니다. OEM System Image에 따라 /system/media/audio/ringtones 디렉토리에 파일을 넣어놓았다면 초기 미디어 스캐닝 중 Settings.System.RINGTONE의 값이 Null이 아닌 정상적인 값으로 설정이 되어 있을 것 같네요.