capito un work-around, nel fissare la suoneria predefinita.
Per le persone che utilizza sia un RingtonePreference
e PreferenceManager.setDefaultValues()
, android:defaultValue
su un RingtonePreference
prende in una stringa in URI di una suoneria. Fornendo una stringa vuota, si imposta la preferenza su "silenzio", mentre altre stringhe non porteranno probabilmente a un URI valido.
Il work-around, quindi, è quello di fornire una stringa fasullo, come ad esempio 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" />
Quando si chiama PreferenceManager.setDefaultValues()
, afferrare la preferenza, e verificare se la stringa fasullo viene immagazzinato:
// 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);
}
}
provato quanto segue 2 senza fortuna: android: defaultValue = "Suoneria predefinita" android: defaultValue = "0" – Japtar
Avere più fortuna con questo: defaultValue = "". Questo imposta l'impostazione predefinita su "Silenzioso", tuttavia. Sembra che RingtonePreference si aspetti un valore stringa, dove si trova una suoneria. Per ottenere il valore predefinito, quindi, dovrei ottenere la stringa per la suoneria predefinita in Impostazioni. – Japtar