我已经全面检查了从Android应用内创建新日历的方法。我见过的唯一方法是在最新的api版本中使用新的Calendar API,但是这似乎只适用于CalendarContract.ACCOUNT_TYPE_LOCAL
。它不会让您创建附加到用户Google帐户的日历,并与Google Calendar
同步。它不会在Google Calendar的在线日历列表中显示。Android添加新日历
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);
如果你的问题解决了,请回答你自己的问题。你会得到一个徽章,许多人将获得免费/简单的帮助。 –
你有问题的解决方案吗?我正在寻找相同的。顺便说一句好的问题。 –