我正在使用preferences.xml来选择铃声(以及其他首选项)。这是代码
<RingtonePreference
android:key="shuttle_tone"
android:ringtoneType="notification"
android:showDefault="false"
android:showSilent="true"
android:defaultValue="content://settings/system/notification_sound"
android:summary="Select the tone that signals the start of the next shuttle"
android:title="Shuttle Tone" />
......一堆其他偏好
使用
在基本UI中启动“首选项”活动case R.id.btn_settings:
Intent settingsActivity = new Intent(getBaseContext(), PreferenceSelect.class);
startActivity(settingsActivity);
当应用程序的主要功能启动时,铃声将在此处检索
case R.id.run_start:
// Retrieve the shuttle & level notifications
SharedPreferences preference = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
String strRingtonePreference = preference.getString(
"shuttle_tone", "DEFAULT_SOUND");
shuttle_rt = RingtoneManager.getRingtone(
getApplicationContext(),
Uri.parse(strRingtonePreference));
/* More stuff ... during which the ringtone is played periodically */
问题在于:当程序首次安装时,如果用户在未访问首选项屏幕的情况下启动run_start代码,则没有声音。
然而,这是奇怪的部分,如果用户启动btn_settings(首选项屏幕),则选择android:defaultValue,即使用户没有实际启动RINGTONE的选择。换句话说,用户只需访问首选项屏幕即可选择defaultValue。如果用户没有,那就是沉默。
我错过了什么?
答案 0 :(得分:2)
在访问SharedPreferences之前,您应该在onCreate中添加以下内容:
// Initialize the preferences with default settings if
// this is the first time the application is ever opened
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);