Android的添加新的日历(Android Adding a new Calendar)

2019-07-31 21:20发布

我已经检查各地想方设法从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 APISYNCADAPTER (帐户类型注释掉)。 有谁知道,如果我想要做的就是甚至可能吗?

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);

Answer 1:

是的,你可以做到这一点。 但既然你想创建您的谷歌帐户链接的日历,你需要为这个谷歌日历API(没有找到与Android的Google日历提供这样一个解决方案)。 检查下面的链接:

  • 对于谷歌Android日历API

  • 插入新的谷歌日历

一定要检查他们的API浏览器。 创建新的日历简单的HTTP请求

POST https://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应用程序与日历提供商(同步后)管理该日历。



文章来源: Android Adding a new Calendar