2010-11-20 14 views
5

क्या XML के माध्यम से रिंगटोन प्रेफरेंस में डिफ़ॉल्ट मान जोड़ने का कोई तरीका है? उदाहरण के लिए, यहां मेरी वरीयता.एक्सएमएल दिखता है।क्या मैं एंड्रॉइड डाल सकता हूं: एक्सएमएल के माध्यम से रिंगटोन प्रेफरेंस के लिए डिफ़ॉल्ट वैल्यू विशेषता?

<RingtonePreference android:key="alarm" 
android:title="Alarm" android:name="Alarm" 
android:summary="Select an alarm" 
android:ringtoneType="alarm" android:showDefault="true" /> 

संभव हो तो, मैं इस तरह, डिफ़ॉल्ट रिंगटोन के लिए RingtonePreference निर्धारित करना चाहते हैं:

<RingtonePreference android:key="alarm" 
android:title="Alarm" android:name="Alarm" 
android:summary="Select an alarm" 
android:ringtoneType="alarm" android:showDefault="true" 
android:defaultValue="defaultRingtone" /> 
+0

की कोशिश की निम्नलिखित 2 के साथ कोई भाग्य: एंड्रॉयड: defaultValue = "डिफ़ॉल्ट रिंगटोन" एंड्रॉइड: डिफ़ॉल्ट वैल्यू = "0" – Japtar

+0

इसके साथ और अधिक भाग्य होने के बाद: defaultValue = ""। यह डिफ़ॉल्ट "चुप," के लिए डिफ़ॉल्ट सेट करता है। ऐसा लगता है कि रिंगटोन प्रेफरेंस एक स्ट्रिंग मान की अपेक्षा करता है, जहां एक रिंगटोन स्थित है। डिफ़ॉल्ट मान प्राप्त करने के लिए, मुझे सेटिंग में डिफ़ॉल्ट रिंगटोन के लिए स्ट्रिंग प्राप्त करना होगा। – Japtar

उत्तर

4

एक काम के आसपास पता लगा डिफ़ॉल्ट रिंगटोन की स्थापना में,।

लोग हैं, जो एक 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); 
    } 
} 
15

आप XML में डिफ़ॉल्ट को परिभाषित कर सकते हैं। जैसा कि आपने कहा था, इसे एक यूआरआई की आवश्यकता है। बस आपको जो चाहिए उसे डिफ़ॉल्ट यूआरआई डालें। उदाहरण के लिए, एक डिफ़ॉल्ट अलार्म के लिए आप डाल ध्वनि:

<RingtonePreference android:key="alarm" 
android:title="Alarm" android:name="Alarm" 
android:summary="Select an alarm" 
android:ringtoneType="alarm" android:showDefault="true" 
android:defaultValue="content://settings/system/alarm_alert" /> 

एक अधिसूचना के लिए आप डाल होगा:

android:defaultValue="content://settings/system/notification_sound" 

आदि

संबंधित मुद्दे