自定义日历同步添加帐户的android
问题描述:
我要添加日历事件中,我能够添加的帐户,但我不`吨知道如何与日历同步。
I want to add events in calendar, i am able to add account but i don`t know how to sync with calendar.
我应该创建一个新的日历ID? 如何验证事件的日历中创建?
should i create a new calendar id ? how to verify event is created on calendar?
答
这是工作我想起我的工作在Android 4.0
this is work for me remember I am working on android 4.0
void createCalendar(Datahelper dh, Context mContext, Account account)
{
final ContentValues v = new ContentValues();
v.put(CalendarContract.Calendars.NAME,account.name);
v.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, account.name);
v.put(CalendarContract.Calendars.ACCOUNT_NAME, account.name);
v.put(CalendarContract.Calendars.ACCOUNT_TYPE, account.type);
v.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.GREEN);
v.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL,Calendars.CAL_ACCESS_OWNER);
v.put(CalendarContract.Calendars.OWNER_ACCOUNT, account.name);
v.put(CalendarContract.Calendars._ID, 123);// u can give any id there and use same id any where u need to create event
v.put(Calendars.SYNC_EVENTS, 1);
v.put(Calendars.VISIBLE, 1);
Uri creationUri = asSyncAdapter(Calendars.CONTENT_URI, account.name, account.type);
Uri calendarData = mContext.getContentResolver().insert(creationUri, v);
long id = Long.parseLong(calendarData.getLastPathSegment());
}
private Uri asSyncAdapter(Uri uri, String account, String accountType)
{
return uri.buildUpon().appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true").appendQueryParameter (Calendars.ACCOUNT_NAME,account) .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType) .build();
}
ContentValues values = new ContentValues();
String eventTitle = eventsubject[i];
values.put(Events.DTSTART, startMillis);
values.put(Events.HAS_ALARM, 1);
values.put(Events.DTEND, endMillis);
values.put(Events.EVENT_COLOR, Color.BLUE);
values.put(Events.TITLE, eventTitle);
values.put(Events.DESCRIPTION, "");
values.put(Events.CALENDAR_ID, calendarId1);
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault() .getID());
Uri uri = cr.insert(Events.CONTENT_URI, values);
long eventID = Long.parseLong(uri.getLastPathSegment());
ContentValues reminders = new ContentValues();
reminders.put(Reminders.EVENT_ID, eventID);
reminders.put(Reminders.METHOD, Reminders.METHOD_ALERT);
reminders.put(Reminders.MINUTES, 2);
Uri uri2 = cr.insert(Reminders.CONTENT_URI, reminders);
Log.e("Reminder", "addreminder" + uri2);