zorientowali się obejść, w ustawieniu domyślny dzwonek.
Dla osób, które wykorzystuje zarówno RingtonePreference
i PreferenceManager.setDefaultValues()
, android:defaultValue
na RingtonePreference
trwa w sznurku do dzwonka za URI. Podając pusty ciąg, domyślnie preferujesz "cisza", podczas gdy inne ciągi prawdopodobnie nie będą dawały prawidłowego identyfikatora URI.
Prace wokół jest więc dostarczenie fałszywego ciąg, takich jak 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" />
Dzwoniąc PreferenceManager.setDefaultValues()
, chwyć preferencje, i sprawdzić, czy podrobiony ciąg jest przechowywana:
// 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);
}
}
próbowałem następujące 2 bez powodzenia: Android: defaultValue = "Domyślny dzwonek" android: defaultValue = "0" – Japtar
Po więcej szczęścia z tym: defaultValue = "". Ustawia to jednak domyślnie "cichy". Wygląda na to, że RingtonePreference oczekuje wartości ciągu, w której znajduje się dzwonek. Aby uzyskać wartość domyślną, musiałbym uzyskać ciąg dla domyślnego dzwonka w Ustawieniach. – Japtar