2012-02-20 7 views
12

हम कैसे फ़ाइलें, फ़ोटो, एक सरल स्ट्रिंग आदि, जैसे किसी कैलेंडर ईवेंट में कुछ अतिरिक्त डेटा संलग्न कर सकते हैं करने के लिए निजी डेटा देते हैं ..कैसे एंड्रॉयड कैलेंडर इवेंट

मैं बढ़ाया गुण और के माध्यम से कुछ अतिरिक्त डेटा डालने में समर्थ इस्तेमाल किया विस्तारित गुण

Uri extendedProperties=Uri.parse("content://com.android.calendar/extendedproperties"); 
ContentValues extendedValues=new ContentValues(); 
extendedValues.put("event_id", id); 
extendedValues.put("name",key); 
extendedValues.put("value",value); 
getApplicationContext().getContentResolver().insert(extendedProperties, extendedValues); 

और बाद में जैसे

नीचे
Uri extentdedProperties=Uri.parse("content://com.android.calendar/extendedproperties"); 
CursorextendedPropertires Cursor=getContentResolver().query(extentdedProperties,null,"event_id = "+Id +",null,null); 

यह एंड्रॉयड 2.2 के साथ ठीक काम करता है कि डेटा पुनः प्राप्त करने में सक्षम ... अगर Android 4.0 (Ice करोड़ में परीक्षण किया गया एक ही कोड ईम सैंडविच)। यह एक त्रुटि फेंक रहा है कि केवल सिंक एडेप्टर सामग्री तक पहुंच सकते हैं: //com.android.calendar/extendedproperties।

इसलिए मैंने क्वेरी को "callerissyncadapter" के रूप में निकाला। अब मैं विस्तारित गुणों को सम्मिलित करने में सक्षम हूं। लेकिन एक बार घटना सर्वर से समन्वयित हो जाती है, सर्वर द्वारा विस्तारित गुण हटाए जा रहे हैं।

यहां तक ​​कि इन बढ़ाया गुण पूरी तरह से कैलेंडर प्रदाताओं द्वारा समर्थित नहीं हैं (गूगल के अलावा अन्य)

वहाँ अन्य घटना कैलेंडर extendedproperties से कुछ अतिरिक्त डेटा संलग्न करने के लिए कोई तरीका है या हम एक में इस विस्तारित गुण का उपयोग कर सकते अधिक बेहतर तरीका।

उत्तर

0

कॉलरिसिनकैडाप्टर का उपयोग न करें जबतक कि आप वास्तव में सिंक एडाप्टर नहीं हैं। इसे सही पर सेट करने से डिवाइस पर सामग्री पर्यवेक्षकों को उस प्रदाता में सामग्री में परिवर्तनों की अधिसूचना नहीं दी जाएगी और आपके परिवर्तनों को सर्वर पर नहीं रखा जाएगा।

आप ऐसा करने की कोशिश क्यों कर रहे हैं? क्या आप कैलेंडर ऐप के साथ अपने ऐप के लिए कुछ डेटा को जोड़ने का प्रयास कर रहे हैं?

यदि हां, तो अपने आवेदन के साथ अपना खुद का, निजी डेटा स्टोर (या सामग्री प्रदाता) क्यों न बनाएं और कैलेंडर सामग्री प्रदाता में ईवेंट की कुंजी द्वारा अपनी अतिरिक्त संपत्तियों को इंडेक्स क्यों न करें? इस तरह, आपके पास अपने ऐप के डेटा और सार्वजनिक संपर्क सामग्री प्रदाता डेटा के बीच एक संबंध है।

+0

निजी स्टोर में किसी ईवेंट को कुंजी रखने का कोई विश्वसनीय तरीका नहीं है। यदि आप ईवेंट का खाता फिर से हटाते हैं और जोड़ते हैं, तो दोनों ईवेंट का _id और _sync_id बदल सकता है, उदा। एक्सचेंज-टाइप खाता। – OferR