摆脱“参加?”在Android日历事件中,使用日历API

问题描述:

我在Android设备上创建本地日历,并将事件插入此日历中。 这里是我的代码(使用虚拟数据现在):摆脱“参加?”在Android日历事件中,使用日历API

public static Uri createCalendarWithName(Context ctx, String calendarName, String displayName, Account account) { 

    Uri target = Uri.parse(CalendarContract.Calendars.CONTENT_URI.toString()); 
    target = target.buildUpon().appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
    .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, account.name) 
    .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, account.type).build(); 

    ContentValues values = new ContentValues(); 
    values.put(Calendars.ACCOUNT_NAME, account.name); 
    values.put(Calendars.ACCOUNT_TYPE, account.type); 
    values.put(Calendars.NAME, calendarName); 
    values.put(Calendars.CALENDAR_DISPLAY_NAME, displayName); 
    values.put(Calendars.CALENDAR_COLOR, CALENDAR_COLOR); 
    values.put(Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER); 
    values.put(Calendars.OWNER_ACCOUNT, account.name); 
    values.put(Calendars.VISIBLE, 1); 
    values.put(Calendars.SYNC_EVENTS, 1); 
    values.put(Calendars.CALENDAR_TIME_ZONE, "Europe/Oslo"); 
    //values.put(Calendars.ALLOWED_ATTENDEE_TYPES, "0"); 

    Uri newCalendar = ctx.getContentResolver().insert(target, values); 

    return newCalendar; 
} 

public void addEventToCalendar(){ 

    long calID = getLocalCalID(); 
    long startMillis = 0; 
    long endMillis = 0;  
    Calendar beginTime = Calendar.getInstance(); 
    beginTime.set(2013, Calendar.MAY, 5, 14, 30); 
    startMillis = beginTime.getTimeInMillis(); 
    Calendar endTime = Calendar.getInstance(); 
    endTime.set(2013, Calendar.MAY, 5, 14, 55); 
    endMillis = endTime.getTimeInMillis(); 

    ContentResolver cr = getContentResolver(); 
    ContentValues values = new ContentValues(); 
    values.put(Events.DTSTART, startMillis); 
    values.put(Events.DTEND, endMillis); 
    values.put(Events.TITLE, "Siste frist for å ettersende papirer"); 
    values.put(Events.DESCRIPTION, "Hei!\n\n"); 
    values.put(Events.CALENDAR_ID, calID); 
    values.put(Events.EVENT_TIMEZONE, "Europe/Oslo"); 
    Uri uri = cr.insert(Events.CONTENT_URI, values); 

    // get the event ID that is the last element in the Uri 
    long eventID = Long.parseLong(uri.getLastPathSegment()); 
    Log.i("EventID", ""+eventID); 

    cr = getContentResolver(); 
    values = new ContentValues(); 
    values.put(Reminders.MINUTES, TimeUnit.MINUTES.convert(2, TimeUnit.DAYS)); 
    values.put(Reminders.EVENT_ID, eventID); 
    values.put(Reminders.METHOD, Reminders.METHOD_ALERT); 
    uri = cr.insert(Reminders.CONTENT_URI, values); 
} 

日历和事件创建为目的,但打开该事件揭示了一个名为“参加”行,有三个单选按钮:“是的,也许和不”。

有没有办法摆脱这个行/单选按钮?这种选择将无论如何不会在一个事件的效果什么那么在当地的日历,我相信......

我使用的是Android 4.0.4设备BTW :)

+0

我有同样的问题。 – 2013-08-05 07:31:35

添加这两种线条显得解决问题:

values.put(Events.ORGANIZER, calendarOwner); 
values.put(Events.HAS_ATTENDEE_DATA, 1); 

不太确定为什么!

Ref:https://gist.github.com/mlc/5188579

+0

你不完全确定的意思是什么!只回答那些你确定的问题。 – Hamad 2013-12-06 04:51:12

+0

values.put(Events.HAS_ATTENDEE_DATA,1);解决了问题! :d – Jambaman 2014-05-31 13:41:46