2011-10-06 32 views
19

मैं यहां समाधान ढूंढने का प्रयास करता हूं, लेकिन जब मैं पिकर कहता हूं तो कोड के लिए नहीं, केवल स्वयं/चयनित फ़ाइल के लिए समाधान होता है। मैं कोड है जब उपयोगकर्ता प्रेस बटन निम्नलिखित का उपयोग करें:रिंगटोन मैनेजर.एक्शन_RINGTONE_PICKER के साथ रिंगटोन कैसे सेट करें?

Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone for notifications:"); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); 
ActivityCurrent.this.startActivityForResult(intent,999); 

इस शो रिंगटोन पिकर, उपयोगकर्ता चुन सकते हैं क्या रिंगटोन चाहता है, लेकिन मैं दो बातें याद आती है: - यह नहीं है - यह नहीं करता है वर्तमान रिंगटोन जब यह खुला दिखाने जब यह


मैं अभी भी जिस तरह से कैसे पहले से ही चयनित वर्तमान रिंग टोन के साथ RINGTONE_PICKER खोलने के लिए लगता है नहीं कर सकते ठीक

पर क्लिक किया जाता है रिंगटोन को बचाने। कोई उपाय?

Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone for notifications:"); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); 
ActivityCurrent.this.startActivityForResult(intent,999); 

उत्तर

20

आप onActivityResult() लागू उपयोगकर्ता को चुनने से परिणाम प्राप्त करने के लिए, तो यह सहेजना होगा।

if (resultCode == RESULT_OK) { 
    Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 
    if (uri != null) { 
    String ringTonePath = uri.toString(); 
} 
यहाँ

एक उदाहरण: http://www.ceveni.com/2009/07/ringtone-picker-in-android-with-intent.html

संपादित करें: अद्यतन

RingtoneManager.setActualDefaultRingtoneUri(
    myActivity, 
    RingtoneManager.TYPE_RINGTONE, 
    uri); 

आप कॉल करना होगा इस :)

+0

धन्यवाद, लेकिन यह केवल पथ को पकड़ने का तरीका है। लेकिन मुझे रास्ता नहीं दिख रहा है: - इस सेटिंग्स को कैसे सहेजना है? - यह खुला होने पर वर्तमान रिंगटोन कैसे दिखाना है? – Michalsx

+0

बस स्रोत अपडेट करें, मैंने सोचा था कि आप पहले ही जानते थे :) –

+0

प्रिय Xjaphx:) बहुत बहुत धन्यवाद, आपने मुझे बचाया:) यह कोड मुझे आवश्यकतानुसार काम कर रहा है। – Michalsx

12
Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtone); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, ringtone); 
startActivityForResult(intent , 1); 

"रिंगटोन" uri जिसमें मैं बचत कर रहा हूँ onActivityResult() में उठाया टोन।

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     switch (requestCode) { 
     case 1: 
      ringtone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 

      // Toast.makeText(getBaseContext(),RingtoneManager.URI_COLUMN_INDEX, 
      // Toast.LENGTH_SHORT).show(); 
      break; 

     default: 
      break; 
     } 
    } 
} 

आशा है कि यह आपकी मदद करे। हिट जवाब दिया अगर यह करता है।

+0

यह काम करता है !! आपने अपना समय बचाया .. धन्यवाद –

+0

धन्यवाद आप यह काम कर रहे हैं लेकिन अगर हमने रिंगटोन मैनेजर.EXTRA_RINGTONE_DEFAULT_URI में हमारी कच्ची फ़ाइल यूरी जोड़ दी है तो रिंगटोन को फिर से खोलने के बाद डिफ़ॉल्ट ध्वनि के लिए समय चयन नहीं चुना जा रहा है पिकर –

+0

क्या आप कृपया मुझे बता सकते हैं –

4

कोड सही है और मेरे लिए काम करता है। लेकिन आप आवश्यक अनुमतियों का जिक्र करना भूल गए हैं ... यह है। इस code..hope कोशिश यह

<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission> 
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission> 
+0

रूट डिवाइस पर, आपको केवल 'android.permission.WRITE_SETTINGS' अनुमति की आवश्यकता है। गैर-रूट डिवाइस के बारे में पता नहीं है, हालांकि – ChuongPham

+0

ओह! मुझे यह नहीं पता था !! जानकारी के लिए Thx ..माइन बेकार है..तो मुझे यह काम करने के लिए तीनों को रखना पड़ा –

4

इस कोड में मदद करता है डिफ़ॉल्ट रिंगटोन जो उपयोगकर्ता पहले जब रिंगटोन पिकर प्रयोग किया जाता है सेट दिखाएगा।

रिंगटोन इरादे के लिए बटन में कोड के नीचे का उपयोग करें।

public void pickRingtone(View view) { 
     // TODO Auto-generated method. stub 

     Intent intent = new.  Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, 
       RingtoneManager.TYPE_RINGTONE); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone"); 

    // for existing ringtone 
     Uri urie =  RingtoneManager.getActualDefaultRingtoneUri(
       getApplicationContext(), RingtoneManager.TYPE_RINGTONE); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, urie); 

    startActivityForResult(intent, 5); 
} 
संबंधित मुद्दे