2012-08-12 29 views
9

पर सिंक नहीं हो सकता है, मैं निम्न कोड से कैलेंडर जोड़ने का प्रयास करता हूं। बनाई गई घटना को मेरे फोन पर कैलेंडर ऐप्स द्वारा पढ़ा जा सकता है, लेकिन केवल ऑनलाइन Google कैलेंडर से सिंक हो सकता है। क्या कोई मुझे इस मुद्दे को हल करने के लिए कुछ हिट दे सकता है?कैलेंडर ईवेंट स्थानीय रूप से फोन पर सहेजा गया, लेकिन Google कैलेंडर

यहाँ कुछ टिप्पणी 1. कोड मेरा असली फोन (गैलेक्सी नेक्सस 4.1.1) पर चलाया गया था रहे हैं 2. अन्य सभी कैलेंडर ईवेंट को Google कैलेंडर में सिंक, बस कार्यक्रम वर्धित सिंक नहीं किया जा सकता कर सकते हैं।

--- अद्यतन ---

जब मैं अनुसरण कोड

values.put(CalendarContract.Events.SYNC_EVENTS,1); 
values.put(CalendarContract.Events.VISIBLE, 1); 

बदल - मैं त्रुटि मिलती है

java.lang.IllegalArgumentException: Only the provider may write to sync_events 

public void addEvent() { 

    long startMillis = 0; 
    long endMillis = 0; 

    Log.v("LOG", "entered addEvent"); 


    //Calendar beginTime = Calendar.getInstance(); 
    //beginTime.set(2012, 8, 11, 22, 0); 
    //startMillis = beginTime.getTimeInMillis(); 
    startMillis = System.currentTimeMillis() + (3600 * 1000)*4; 

    //Calendar endTime = Calendar.getInstance(); 
    //endTime.set(2012, 8, 11, 23, 0); 
    //endMillis = endTime.getTimeInMillis(); 
    endMillis = System.currentTimeMillis() + (3600 * 1000)*5; 

    ContentResolver cr = getContentResolver(); 
    ContentValues values = new ContentValues(); 

    values.put(CalendarContract.Events.DTSTART, startMillis); 
    values.put(CalendarContract.Events.DTEND, endMillis); 
    values.put(CalendarContract.Events.TITLE, "Dog"); 
    values.put(CalendarContract.Events.DESCRIPTION, "DogInDESCRIPTION"); 
    values.put(CalendarContract.Events.CALENDAR_ID, 1); 
    values.put(CalendarContract.Events.EVENT_TIMEZONE, "eventTimezone"); 

    values.put(CalendarContract.Events.SYNC_EVENTS,0);  


    cr.insert(CalendarContract.Events.CONTENT_URI, values); 
} 
+0

क्या आपने इस मुद्दे को हल करने में कामयाब रहे हैं। – AndroidDev

उत्तर

3

आप shouldnसेट नहीं है 10 CalendarContract.Events.CONTENT_URI पर।

यदि कैलेंडर पहले से ही आपके डिवाइस पर दिखाई देने और सिंक्रनाइज़ के रूप में सेटअप है, तो आप केवल एक ईवेंट जोड़ सकते हैं, और यह सिंक्रनाइज़ हो जाएगा।

यदि आपको ऐप से सिंक चालू करने की आवश्यकता है तो आप CalendarContract.Events.SYNC_EVENTSCalendarContract.Calendars.CONTENT_URI पर सेट कर सकते हैं।

उदाहरण के लिए (calId उस कैलेंडर का आईडी है जिसे आप दिखाना और सिंक्रनाइज़ करने के लिए अपडेट करना चाहते हैं)।

ContentResolver cr = context.getContentResolver(); 
ContentValues values = new ContentValues(); 
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1); 
values.put(CalendarContract.Calendars.VISIBLE, 1); 

cr.update(ContentUris.withAppendedId(Calendars.CONTENT_URI, calId), values, null, null);