đặn ra một công việc xung quanh, trong thiết lập nhạc chuông mặc định.
Đối với những người sử dụng cả một RingtonePreference
và PreferenceManager.setDefaultValues()
, android:defaultValue
trên RingtonePreference
mất trong một chuỗi URI của một nhạc chuông. Bằng cách cung cấp một chuỗi rỗng, bạn đang đặt mặc định tùy chọn thành "im lặng", trong khi các chuỗi khác có thể sẽ không dẫn đến URI hợp lệ.
công việc xung quanh này, sau đó, là để cung cấp một chuỗi không có thật, chẳng hạn như android:defaultValue="defaultRingtone"
:
<RingtonePreference android:key="alarm"
android:title="Alarm" android:name="Alarm"
android:summary="Select an alarm"
android:ringtoneType="alarm" android:showDefault="true"
android:defaultValue="defaultRingtone" />
Khi gọi PreferenceManager.setDefaultValues()
, lấy các sở thích, và kiểm tra xem chuỗi giả đang được lưu trữ:
// Set the stored preferences to default values defined in options.xml
PreferenceManager.setDefaultValues(this, R.layout.options, false);
// Check the stored string value, under the RingtonPreference tag
final SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
final String savedUri = savedState.getString("alarm", "");
// By default, set the alarm's URI to null
Uri alarmUri = null;
// Check if a String was actually provided
if(savedUri.length() > 0) {
// If the stored string is the bogus string...
if(savedUri.equals("defaultRingtone")) {
// Set the alarm to this system's default alarm.
alarmUri = Settings.System.DEFAULT_ALARM_ALERT_URI;
// Save this alarm's string, so that we don't have to go through this again
final SharedPreferences.Editor saveEditor = saveState.edit();
saveEditor.putString("alarm", alarmUri.toString());
saveEditor.commit();
}
// Otherwise, retrieve the URI as normal.
else {
alarmUri = Uri.parse(savedUri);
}
}
thử 2 sau không có may mắn: android: defaultValue = "Nhạc chuông mặc định" android: defaultValue = "0" – Japtar
Có thêm may mắn với điều này: defaultValue = "". Điều này đặt mặc định là "im lặng", tuy nhiên. Có vẻ như RingtonePreference mong đợi một giá trị chuỗi, nơi có nhạc chuông. Để có được giá trị mặc định, tôi sẽ phải lấy chuỗi cho nhạc chuông mặc định trong Cài đặt. – Japtar