Ben*_*ner 10 api android calendar
我已经检查了从Android应用程序中创建新日历的方法.我见过的唯一方法是在最新的api版本中使用新的Calendar API,但这只是在您使用时似乎有效CalendarContract.ACCOUNT_TYPE_LOCAL.它不会让您创建附加到用户Google帐户的日历,与之同步Google Calendar.它不会出现在Google日历的在线日历列表中.
values.put(CalendarContract.Calendars.ACCOUNT_TYPE,
CalendarContract.ACCOUNT_TYPE_LOCAL);
Run Code Online (Sandbox Code Playgroud)
我已尝试使用帐户中的帐户类型,但这不起作用.但它似乎没有产生任何错误.结果很好.
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
Run Code Online (Sandbox Code Playgroud)
以下是使用Calendar APIand 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);
Run Code Online (Sandbox Code Playgroud)
是的,你可以做到。但由于您想创建一个与您的 Google 帐户链接的日历,因此您需要 Google Calendar API(没有找到使用 Android Calendar Provider 执行此操作的单一解决方案)。检查以下链接:
请务必检查他们的 API 浏览器。用于创建新日历的简单HTTP 请求:
POST https://www.googleapis.com/calendar/v3/calendars?key={YOUR_API_KEY}
{
"summary": "My new google calendar"
}
Run Code Online (Sandbox Code Playgroud)
这是回应:
{
"kind": "calendar#calendar",
"etag": "__________etag_val_________",
"id": "______id_goes_here______@group.calendar.google.com",
"summary": "My new google calendar"
}
Run Code Online (Sandbox Code Playgroud)
之后,您应该能够使用日历提供程序从 Android 应用程序管理此日历(同步后)。
| 归档时间: |
|
| 查看次数: |
2943 次 |
| 最近记录: |