사용자가 내 앱의 알림 벨소리를 선택할 수있게하려고합니다. 기본 알림 벨소리가되고 싶은 사용자 지정 사운드 파일 (.mp3 파일이/raw에 있음)이 있습니다. 내가 저장/공유 환경 설정에서/이런 식으로 선택한 벨소리 URI를 얻을 :벨소리 선택 도구 : 선택시 '없음'또는 '기본 알림 소리'확인
public static void setNotificationSound(Activity activity, String uri) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(activity);
sharedPref.edit().putString("notificationSound", uri).apply();
}
public static Uri getNotificationSound(Context context) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
return Uri.parse(sharedPref.getString("notificationSound", ""));
}
을 그리고 이것은 내가 벨소리 선택기 표시 방법은 다음과 같습니다
Uri notificationSoundUri = SharedPrefMethods.getNotificationSound(mACA); //gets the saved uri
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Notification Ringtone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, Uri.parse("android.resource://" + mACA.getPackageName() + "/raw/notificationbrightside")); //my custom sound
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, notificationSoundUri); //pass the saved URI to be 'checked'
this.startActivityForResult(intent, 555);
내 문제는 EXTRA_RINGTONE_EXISTING_URI
줄 것으로 보인다을 . 사용자가 시스템 벨소리를 선택하고 선택기로 돌아 오면 벨소리가 올바르게 선택됩니다. 그러나 사용자가 '없음'또는 '기본 알림 사운드'(내 맞춤 사운드)를 선택하고 선택기로 돌아 오면 아무 것도 확인되지 않습니다.
내 코드 (여기에 표시되지 않음)에있는 모든 항목이 모두 정상입니다. 사용자 정의 벨소리를 선택할 때 사운드가 내 알림에 올바르게 할당됩니다. '없음'을 선택하면 소리가 나지 않습니다. 이는 올바른 URI가 SharedPref에 저장된다는 것을 의미합니다.
의도가 'none'또는 '기본 알림 소리'가 선택 될 때 선택되도록하려면 무엇을 전달해야합니까?