2013-07-22 5 views
5

मैं एंड्रॉइड कैलेंडरप्रोवाइडर में रंगों का उपयोग करने के तरीके पर सबसे उलझन में हूं। मैं घटनाओं को ठीक से जोड़ सकता हूं, लेकिन जब मैं किसी विशेष रंग के साथ एक डालने का प्रयास करता हूं, तो यह प्राथमिकता डिफ़ॉल्ट कैलेंडर रंग (हल्का नीला) के लिए अनदेखा प्रतीत होता है।एंड्रॉइड कैलेंडरप्रोवाइडर घटनाक्रम रंग

मुझे लगता है कि मुझे बिल्कुल यकीन नहीं है कि रंगों का उपयोग कैसे किया जाता है। मुझे आश्चर्य है कि कोई इस मामले पर कुछ प्रकाश डालने के लिए बहुत दयालु हो सकता है।

इस बीच, यहां मेरे कोड है (घटना पैरामीटर, एक कस्टम वर्ग है मैं जानता हूँ कि नाम भ्रमित हो जाता है):

public long insert(Event event) throws ParseException{ 

    ContentValues eventValues = new ContentValues(); 
    eventValues.put("calendar_id", 1); 
    eventValues.put(Events.SYNC_DATA1, event.getId()); 
    eventValues.put(Events.TITLE, event.getTitle()); 
    eventValues.put(Events.DESCRIPTION, event.getTitle()); 
    eventValues.put(Events.EVENT_COLOR, Color.RED); 
    eventValues.put(Events.EVENT_TIMEZONE, "Europe/Rome"); 

    eventValues.put(Events.DTSTART, event.getStart().getTime()); 
    eventValues.put(Events.DTEND, event.getEnd().getTime()); 

    Uri eventUri = mContentResolver.insert(Uri.parse(eventUriString).buildUpon().appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true").appendQueryParameter(Calendars.ACCOUNT_NAME, "DUMMY").appendQueryParameter(Calendars.ACCOUNT_TYPE, "accountType").build(), eventValues); 
    return Long.parseLong(eventUri.getLastPathSegment()); 
} 

धन्यवाद।

उत्तर

3

ठीक है, मुझे लगता है कि मुझे दूसरी रात जला दिया गया था। फिर भी, अगर कोई और यहां समाप्त होता है, तो कैलेंडर-> ईवेंट इंटरैक्शन पर एक संक्षिप्त स्पष्टीकरण देना उचित है, जहां तक ​​मुझे यह मिला।

लंबी कहानी छोटी: घटना रंग आपके द्वारा रखे गए कैलेंडर पर निर्भर करता है। कैलेंडर इवेंट द्वारा ओवरराइड होने पर इवेंट_कॉलर कॉलम क्यों होता है? मैं चाहता था कि मुझे पता था।

public long insertCalendar(EventType eventType) { 

    Uri calUri = CalendarContract.Calendars.CONTENT_URI; 
    ContentValues cv = new ContentValues(); 
    cv.put(CalendarContract.Calendars.ACCOUNT_NAME, "DUMMY"); 
    cv.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL); 
    cv.put(CalendarContract.Calendars.NAME, eventType.getDescription()); 
    cv.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, eventType.getDescription()); 
    cv.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.parseColor(eventType.getColor())); 
    cv.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER); 
    cv.put(CalendarContract.Calendars.OWNER_ACCOUNT, true); 
    cv.put(CalendarContract.Calendars.VISIBLE, 1); 
    cv.put(CalendarContract.Calendars.SYNC_EVENTS, 1); 
    //cv.put(CalendarContract.Calendars.CAL_SYNC1, eventType.getId()); 

    calUri = calUri.buildUpon() 
     .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
     .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, "DUMMY") 
     .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL) 
     .build(); 

    Uri result = mContentResolver.insert(calUri, cv); 
    return Long.parseLong(result.getLastPathSegment()); 
} 

कृपया ध्यान दें मैं CALENDAR_COLOR कॉलम में एक रंग डाल रहा हूं कि इस मामले में मैं,:

तो, एक बार आप अपने फैंसी SyncAdapter की स्थापना की, उपयोगकर्ता आदि आप एक नया कैलेंडर बनाने की जरूरत मैं रंग में # 000000 की तरह कुछ पार्सिंग। ब्लैक। ACCOUNT_TYPE के अंदर मान भी देखें। जो मैंने इकट्ठा किया उससे वहां एक और तरीका नहीं लगता है।

public long insert(Event event, long calendarID) throws ParseException { 

    EventTypeDal adapter = new EventTypeDal(); 
    EventType et = adapter.GetEventTypeById(event.getFkEventType()); 

    ContentValues eventValues = new ContentValues(); 

    eventValues.put("calendar_id", calendarID); 
    //eventValues.put(Events.SYNC_DATA1, event.getId()); 
    eventValues.put(Events.TITLE, event.getTitle()); 
    eventValues.put(Events.DESCRIPTION, et.getDescription()); 

    eventValues.put(Events.EVENT_TIMEZONE, "Europe/Rome"); 

    eventValues.put(Events.DTSTART, event.getStart().getTime()); 
    eventValues.put(Events.DTEND, event.getEnd().getTime()); 

    Uri eventUri = mContentResolver.insert(Uri.parse(eventUriString).buildUpon().appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true").appendQueryParameter(Calendars.ACCOUNT_NAME, "DUMMY").appendQueryParameter(Calendars.ACCOUNT_TYPE, "accountType").build(), eventValues); 
    return Long.parseLong(eventUri.getLastPathSegment()); 
} 

अब मैं एक कैलेंडर (कैलेंडर आईडी परम) के अंदर एक ईवेंट डाल रहा हूं। यह कार्यक्रम कैलेंडर के रंग के साथ प्रदर्शित किया जाएगा।

1

आपको EVENT_COLOR (जो केवल पढ़ने के लिए) के बजाय Events.EVENT_COLOR_KEY का उपयोग करने की आवश्यकता है। आपके द्वारा उपयोग किए जाने वाले मान को TYPE_EVENT प्रकार के ColorsColumns table से COLOR_KEY होना आवश्यक है।

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