एक काम के आसपास पता लगा डिफ़ॉल्ट रिंगटोन की स्थापना में,।
लोग हैं, जो एक RingtonePreference
पर दोनों एक RingtonePreference
और PreferenceManager.setDefaultValues()
, android:defaultValue
का उपयोग करता है के लिए एक रिंगटोन के यूआरआई के लिए एक स्ट्रिंग में ले जाता है। एक खाली स्ट्रिंग प्रदान करके, आप वरीयता को "चुप्पी" के रूप में डिफॉल्ट कर रहे हैं, जबकि अन्य तार शायद कोई वैध यूआरआई नहीं ले पाएंगे।
काम के आसपास है, तो, एक फर्जी स्ट्रिंग प्रदान करने के लिए इस तरह के 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" />
जब PreferenceManager.setDefaultValues()
बुला, वरीयता हड़पने, और जाँच:
// 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);
}
}
की कोशिश की निम्नलिखित 2 के साथ कोई भाग्य: एंड्रॉयड: defaultValue = "डिफ़ॉल्ट रिंगटोन" एंड्रॉइड: डिफ़ॉल्ट वैल्यू = "0" – Japtar
इसके साथ और अधिक भाग्य होने के बाद: defaultValue = ""। यह डिफ़ॉल्ट "चुप," के लिए डिफ़ॉल्ट सेट करता है। ऐसा लगता है कि रिंगटोन प्रेफरेंस एक स्ट्रिंग मान की अपेक्षा करता है, जहां एक रिंगटोन स्थित है। डिफ़ॉल्ट मान प्राप्त करने के लिए, मुझे सेटिंग में डिफ़ॉल्ट रिंगटोन के लिए स्ट्रिंग प्राप्त करना होगा। – Japtar