日历事件颜色不会在我的Android应用和Google网络日历之间同步

时间:2015-07-09 13:51:59

标签: android calendar google-calendar-api android-calendar

在我的Android应用程序同步事件到谷歌日历后,我看到彩色谷歌Android日历,但没有改变谷歌网页日历事件颜色。我做错了什么?

名称是accountName。

protected void fetchCalendarForUser(String name) {
    Cursor cur = null;
    ContentResolver cr = getContentResolver();
    Uri uri = CalendarContract.Calendars.CONTENT_URI;
    String selection = "((" + CalendarContract.Calendars.ACCOUNT_NAME + " = ?) AND ("
            + CalendarContract.Calendars.ACCOUNT_TYPE + " = ?) AND ("
            + CalendarContract.Calendars.OWNER_ACCOUNT + " = ?))";
    String[] selectionArgs = new String[] {name, "com.google", name};

    cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);
    cur.moveToNext();
        long calID = 0;
        String displayName = null;
        String accountName = null;
        String ownerName = null;

        // Get the field values
        calID = cur.getLong(PROJECTION_ID_INDEX);
        displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
        accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
        ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);

    int i = 0;
    List<Date> laststart = new ArrayList<Date>();
    List<Date> lastend = new ArrayList<Date>();
    boolean equal=false;
    for (Map.Entry<String, ArrayList<CalendarEntry>> item : calendarEntriesByDay.entrySet()) {
        for (CalendarEntry entry : item.getValue()) {
            for(int j=0;j<laststart.size();j++)
            {
                if(laststart.get(j) == entry.getStart()){
                    if(lastend.get(j) == entry.getEnd()){
                        equal=true;
                    }
                }
            }
            if(equal==false) {
                createEventOnCalendar(calID, entry);
                i++;
            }
            else
            {
                equal=false;
            }
            laststart.add(entry.getStart());
            lastend.add(entry.getEnd());
        }
    }

    if (i > 0) {
        Crouton.makeText(this, getResources().getString(eu.rerisoft.servicebus.R.string.google_calendar_add_success, displayName, String.valueOf(i)), Style.ALERT).show();
    } else {
        Crouton.makeText(this, eu.rerisoft.servicebus.R.string.google_calendar_add_error, Style.ALERT).show();
    }
}

protected long createEventOnCalendar(long calID, CalendarEntry event) {
    String colorString = getResources().getString(event.getColorRes());
    int eventColor = Color.parseColor(colorString);
    ContentResolver cr = getContentResolver();
    ContentValues values = new ContentValues();
    values.put(CalendarContract.Events.DTSTART, event.getStart().getTime());
    values.put(CalendarContract.Events.DTEND, event.getEnd().getTime());
    values.put(CalendarContract.Events.TITLE, event.getTitle());
    values.put(CalendarContract.Events.EVENT_COLOR, eventColor);
    values.put(CalendarContract.Events.DESCRIPTION, event.getDescription());
    values.put(CalendarContract.Events.CALENDAR_ID, calID);
    values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getTimeZone("UTC").getDisplayName());
    Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
    long eventID = Long.parseLong(uri.getLastPathSegment());
    return eventID;
}

抱歉英文不好。

1 个答案:

答案 0 :(得分:0)

我在3个月之前做过同样的事情:

String appointmentColorCode = "Color_which_Is_Currently_Getting_From_Calendar";
int mColorCode = 0;                     
mColorCode = (0xff000000 + Integer.parseInt(appointmentColorCode)); 

您必须在日历中提供 Color_which_Is_Currently_Getting_From_Calendar

mColorCode 将是您的最终颜色代码。&#39;

完成