Android 安卓添加新日历
我已经检查了所有的方法,从Android应用程序中创建一个新的日历。我看到的唯一方法是在最新的API版本中使用新的日历API,但这似乎只有在使用Android 安卓添加新日历,android,api,calendar,Android,Api,Calendar,我已经检查了所有的方法,从Android应用程序中创建一个新的日历。我看到的唯一方法是在最新的API版本中使用新的日历API,但这似乎只有在使用CalendarContract.ACCOUNT\u TYPE\u LOCAL时才起作用。它不允许您创建附加到用户Google帐户的日历,并与Google日历同步。它不会出现在的联机日历列表中 我已尝试使用帐户中的帐户类型,但这不起作用。不过,它似乎没有产生任何错误。结果很好 values.put(CalendarContract.Calendars.A
CalendarContract.ACCOUNT\u TYPE\u LOCAL
时才起作用。它不允许您创建附加到用户Google帐户的日历,并与Google日历
同步。它不会出现在的联机日历列表中
我已尝试使用帐户中的帐户类型,但这不起作用。不过,它似乎没有产生任何错误。结果很好
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);
是的,你能做到。但是,由于您希望创建一个与您的谷歌帐户链接的日历,因此需要谷歌日历API(没有找到一个使用Android日历提供程序实现此目的的单一解决方案)。查看以下链接:
POSThttps://www.googleapis.com/calendar/v3/calendars?key={YOUR_API_KEY}
{
"summary": "My new google calendar"
}
这是响应:
{
"kind": "calendar#calendar",
"etag": "__________etag_val_________",
"id": "______id_goes_here______@group.calendar.google.com",
"summary": "My new google calendar"
}
之后,您应该能够使用日历提供商(同步后)从Android应用程序管理此日历。如果您的问题得到解决,请回答您自己的问题。您将获得一枚徽章,许多人将得到免费/轻松的帮助。您有任何解决问题的方法吗?我也在找。顺便说一句,好问题。你能详细说明一下吗?什么是代码中的
您的\u API\u密钥
。无论如何,第一个仍然有效,可以让您快速开始使用Android和谷歌日历API。说到用API检查插入新日历
{
"kind": "calendar#calendar",
"etag": "__________etag_val_________",
"id": "______id_goes_here______@group.calendar.google.com",
"summary": "My new google calendar"
}