2014-02-09 55 views
5

我一定經歷了迄今爲止基於Google日曆的堆棧溢出問題,但沒有運氣。我已經嘗試了幾個小時,幾乎沒有結果。如何通過Android應用程序查看公共Google日曆

我是一個非常漂亮的Java和Android程序員,幾乎沒有什麼經驗。基本上,我遇到的主要問題是查看另一個用戶的Google日曆,該日曆設置爲公開。

目前,從谷歌教程和其他網站我設法讓日曆顯示,這非常簡單。它只會加載並顯示當前用戶的日曆。這可以從字面上完成(使用佈局中的簡單按鈕)。

public void onClick(View view) { 
    // A date-time specified in milliseconds since the epoch. 
    long startMillis = System.currentTimeMillis(); 

    Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon(); 
    builder.appendPath("time"); 
    ContentUris.appendId(builder, startMillis); 
    Intent intent = new Intent(Intent.ACTION_VIEW).setData(builder.build()); 
    startActivity(intent); 
} 

顯然,這不以任何用戶數據通過對公共賬號什麼的,我已經通過谷歌的教程中Calendar Provider的開發者指南閱讀。我試圖設置帳戶詳細信息的事情,但它從來沒有工作。我試圖將其作爲一個同步適配器來做,但說實話,我只知道我做的不對。我不知道我是否真的需要使用同步適配器,因爲我所要做的只是從字面上看事件,不會修改任何內容或更新任何內容。

我正在使用API​​ 14+並希望用戶使用Calendar Provider等。它看起來很簡單,但我已經抨擊我的頭幾天,並把它放了很多小時,似乎沒有什麼我做作品。至少我有某種日曆開放,但這不是我想要的。

這是否都只是同步適配器?如果是這樣,我將如何能夠調用日曆?類似的還有一個問題不得不

private static Uri buildCalUri() { 
return CalendarContract.Calendars.CONTENT_URI 
     .buildUpon() 
     .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
     .appendQueryParameter(Calendars.ACCOUNT_NAME, ACCOUNT_NAME) 
     .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL) 
     .build(); 

}

我希望這類似於我所需要的東西,但我非常不確定。在開發者教程中ACCOUNT_TYPE_LOCAL非常重要,如果帳戶不在設備上

任何幫助將不勝感激!

回答

3

如果您希望將公共Google日曆(www.google.com/calendar)與您的Android應用程序集成在一起,則必須使用Google Calendar API

最簡單的方法是下載Google Calendar Client Library from here,然後使用API Reference here。在客戶端庫頁面中,您需要下載「Google API客戶端庫Java(rc)」包以便集成到您的Android應用程序中。

您首先需要訪問API Console to create an App with Calendar API Access

如果你不希望使用本地庫,你甚至可以做它使用REST API(使用HTTP GET & POST命令),example App here

希望這有助於。

+0

嘿夥計, 是的,我有一個項目的字面設置與所有這一切。我使用了Google所做的一些視頻會議事件中的示例日曆項目。所有它讓我做的是查看日曆本身而不是內部的事件。除此之外,我無法解決任何問題,因爲這對我來說確實很複雜。我想我可以嘗試從API導入庫和東西后設置一些東西。我想再給它一次。遺憾的是,在它的工作方式上沒有真正的例子。我對這些東西很無知:(。 謝謝 – Jamibi

+0

@Jamibi你有沒有找到一個解決方案,如何訪問現在的事件數據? – MEX

0

對於任何遵循Android開發者API示例的人,仍然無法找到如何添加公共日曆。試用

CalendarListEntry gracieCal = new CalendarListEntry(); 
gracieCal.setId("your-public-calendar-id"); 
mService.calendarList().insert(gracieCal); 

Events events = mService.events().list(gracieCal.getId()) 
       .setMaxResults(10) 
       .setTimeMin(new DateTime(System.currentTimeMillis())) 
       .setOrderBy("startTime") 
       .setSingleEvents(true) 
       .execute(); 
List<Event> items = events.getItems(); 

「MSERVICE」是com.google.api.services.calendar.Calendar實例,你應該已經創建。(請參閱其他答案中提到的api教程)

'your-public-calendar-id'可以在您的公共Google日曆的設置中找到。

相關問題