我用一个简单的选择对话框让用户选择一个通知声音,这里的代码开始选择器:RingtoneManager显示手机铃声,而不是通知声音
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION | RingtoneManager.TYPE_ALARM);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.selectSound));
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(LocalCfg.getNotificationSound()));
startActivityForResult(intent, SELECT_RINGTONE_REQUEST);
的LocalCfg.getNotificationSound()
简单地检查内部SharedPreferences
设置,在情况下返回默认通知声音Uri
设置尚不存在:在所有测试的手机观察
public static String getNotificationSound() {
return mPrefs.getString(KEY_PREF_NOTIFY_SOUND_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION).toString());
}
问题:“去故障“列出的声音不是通知/报警声音,而是实际的电话铃声(系统默认或由用户设置的自定义)。
某些手机(Samsung Galaxy Young,Xperia Z1 Compact)显示为“默认通知音”(实际上是错误的),其他一些手机(Nexus设备,SDK 22)显示为“默认铃声”。
为什么会发生如果我明确通过RingtoneManager.TYPE_NOTIFICATION | RingtoneManager.TYPE_ALARM
标志?