我已經全面檢查了從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);
如果你的問題解決了,請回答你自己的問題。你會得到一個徽章,許多人將獲得免費/簡單的幫助。 –
你有問題的解決方案嗎?我正在尋找相同的。順便說一句好的問題。 –