Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓添加新日历_Android_Api_Calendar - Fatal编程技术网

Android 安卓添加新日历

Android 安卓添加新日历,android,api,calendar,Android,Api,Calendar,我已经检查了所有的方法,从Android应用程序中创建一个新的日历。我看到的唯一方法是在最新的API版本中使用新的日历API,但这似乎只有在使用CalendarContract.ACCOUNT\u TYPE\u LOCAL时才起作用。它不允许您创建附加到用户Google帐户的日历,并与Google日历同步。它不会出现在的联机日历列表中 我已尝试使用帐户中的帐户类型,但这不起作用。不过,它似乎没有产生任何错误。结果很好 values.put(CalendarContract.Calendars.A

我已经检查了所有的方法,从Android应用程序中创建一个新的日历。我看到的唯一方法是在最新的API版本中使用新的日历API,但这似乎只有在使用
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日历提供程序实现此目的的单一解决方案)。查看以下链接:

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

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"
}