eine Behelfslösung schaut hat, in den Standard-Klingelton einstellen.
Für die Menschen, die beide verwenden eine RingtonePreference
und PreferenceManager.setDefaultValues()
, android:defaultValue
auf einem RingtonePreference
nimmt in einem String in einen URI Klingelton. Wenn Sie eine leere Zeichenfolge angeben, verwenden Sie standardmäßig die Einstellung "Stille", während andere Zeichenfolgen wahrscheinlich zu keinem gültigen URI führen.
Die Work-around ist es also, eine falsche Zeichenfolge zu bieten, wie 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" />
Wenn PreferenceManager.setDefaultValues()
Aufruf, den Vorzug greifen, und überprüfen, ob die falsche Zeichenfolge gespeichert wird:
// 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);
}
}
versucht, die folgenden 2 ohne Glück: android: defaultValue = "Standard-Klingelton" android: defaultValue = "0" – Japtar
Mehr Glück mit diesem: defaultValue = "". Dies setzt den Standardwert jedoch auf "still". Es scheint, dass RingtonePreference einen String-Wert erwartet, in dem sich ein Klingelton befindet. Um den Standardwert zu erhalten, müsste ich die Zeichenfolge für den Standardklingelton in den Einstellungen abrufen. – Japtar