android - एंड्रॉइड कैलेंडर प्रदाता घटनाक्रम रंग




colors calendar (3)

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

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

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

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());
}

धन्यवाद।


Answers

EVENT_COLOR के बजाय आपको ईवेंट.EVENT_COLOR_KEY का उपयोग करना होगा (जो केवल पढ़ने के लिए है)। आपके द्वारा उपयोग किए जाने वाले मान को COLOR_KEY रंगों की कॉलम कॉलम तालिका प्रकार TYPE_EVENT होने चाहिए।


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

लंबी कहानी छोटी: ईवेंट रंग उस कैलेंडर पर निर्भर करते हैं जो आप उन्हें डालते हैं। यदि कोई कैलेंडर कैलेंडर द्वारा अधिव्याप्त हो जाता है तो एक ईवेंट का स्तंभ क्यों है? मैं whish मुझे पता था

इसलिए, एक बार जब आप अपना फैंसी सिंकैडैप्टर, यूजर इत्यादि सेट करते हैं तो आपको एक नया कैलेंडर बनाने की आवश्यकता होती है:

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 कॉलम में एक रंग डाल रहा हूं, इस स्थिति में मैं # 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());
}

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


सौरभ पारीक का अब तक का सबसे अच्छा जवाब है।

हालांकि, सही झंडे का भी उपयोग कर सकते हैं।

/* hide keyboard */
((InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE))
    .toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);

/* show keyboard */
((InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE))
    .toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);

वास्तविक उपयोग का उदाहरण

/* click button */
public void onClick(View view) {      
  /* hide keyboard */
  ((InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE))
      .toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);

  /* start loader to check parameters ... */
}

/* loader finished */
public void onLoadFinished(Loader<Object> loader, Object data) {
    /* parameters not valid ... */

    /* show keyboard */
    ((InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE))
        .toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);

    /* parameters valid ... */
}




android colors calendar