我已经检查各地想方设法从Android应用程序中创建一个新的日历。 我见过的唯一方法是使用新的日历API在最新版本的API,但是这似乎只是工作,如果你使用CalendarContract.ACCOUNT_TYPE_LOCAL
。 它不会让你创建连接到用户帐户谷歌日历,与同步Google Calendar
。 它不会在出现在日历列表在线谷歌日历 。
values.put(CalendarContract.Calendars.ACCOUNT_TYPE,
CalendarContract.ACCOUNT_TYPE_LOCAL);
我已经使用从帐户的帐户类型试过了,但是这是行不通的。 它似乎并不虽然产生任何错误。 结果回来的罚款。
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
下面是用于添加使用新的本地日历的全部代码Calendar API
和SYNCADAPTER
(帐户类型注释掉)。 有谁知道,如果我想要做的就是甚至可能吗?
AccountManager manager = AccountManager.get(context);
Account[] accounts = manager.getAccountsByType("com.google");
String accountName = "";
String accountType = "";
for (Account account : accounts) {
accountName = account.name;
accountType = account.type;
break;
}
ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Calendars.ACCOUNT_NAME, accountName);
//values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
values.put(CalendarContract.Calendars.NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
values.put(CalendarContract.Calendars.VISIBLE, 1);
values.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
values.put(CalendarContract.Calendars.OWNER_ACCOUNT, accountName);
values.put(CalendarContract.Calendars.DIRTY, 1);
values.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault().getID());
Uri calUri = CalendarContract.Calendars.CONTENT_URI;
calUri = calUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType)
.build();
Uri result = cr.insert(calUri, values);