2012-09-24 65 views
8

我已經全面檢查了從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 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); 
+0

如果你的問題解決了,請回答你自己的問題。你會得到一個徽章,許多人將獲得免費/簡單的幫助。 –

+0

你有問題的解決方案嗎?我正在尋找相同的。順便說一句好的問題。 –

回答

2

是的,你可以做到這一點。但是,由於您希望創建與您的Google帳戶關聯的日曆,因此您需要Google Calendar API才能使用此功能(在Android日曆提供程序中找不到此解決方案)。檢查下面的鏈接:

一定要檢查他們的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": "[email protected]", 
"summary": "My new google calendar" 
} 

之後,你應該能夠從Android應用程序與管理這個日曆日曆提供者(在同步之後)。

+0

請你詳細說明一下嗎?代碼中的'YOUR_API_KEY'是什麼? – yshahak

+0

對於Android API身份驗證僅適用於[OAuth 2.0](https://developers.google.com/google-apps/calendar/auth)。無論如何,第1 [link](https://developers.google.com/google-apps/calendar/quickstart/android)仍然有效,可以讓您快速入門Android和Google Calendar API。說到用他們的API檢查插入新日曆[this](https://developers.google.com/google-apps/calendar/v3/reference/calendars/insert) – Luke