2010-12-07 81 views
20

我想從android應用程序打開日曆應用程序。當我在網上搜索時,我得到的只是使用意圖創建新事件。我可以找到意圖打開聯繫人和圖片等如何使用Intent(Froyo)啓動Android日曆應用程序

是否有可能啓動日曆到特定的一週或一天?如果可能的話,有人可以幫助我。

在此先感謝。

+0

我試過了,但它給了我一個權限被拒絕異常 – 2012-04-02 07:48:42

回答

19
Intent intent = new Intent(Intent.ACTION_EDIT); 
intent.setType("vnd.android.cursor.item/event"); 
intent.putExtra("title", "Some title"); 
intent.putExtra("description", "Some description"); 
intent.putExtra("beginTime", eventStartInMillis); 
intent.putExtra("endTime", eventEndInMillis); 
startActivity(intent); 
+0

當我試着這個我得到了以下錯誤..導致:android.content.ActivityNotFoundException:未發現處理意圖{Act = android.intent.action.EDIT typ = vnd.android。 cursor.item/event(有額外功能)} ..請給我一個解決方案離子在這。? – 2012-01-05 12:10:12

+6

@TijoKVarghese:確保您在Android手機中運行或調試您的應用程序,而不是模擬器。我聽說Android日曆並未默認打包到模擬器映像中。 – 2012-01-10 10:58:47

0

通過繁瑣的試驗的過程中,我發現:

Intent calendarIntent = new Intent() ;
calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity");

...對我的作品推出日曆的日程活動。嘗試過沒有 ,但也許com.android.calendar.DayActivity, .WeekActivity和.MonthActivity將啓動相應的 活動。

1

AgendaActivity加載「議程」視圖。

根據我的經驗,您不能深入鏈接到股票Android中的日,周和月活動,但是您可以使用加載最後打開的視圖的「LaunchActivity」。

3

在Android源代碼中查看日曆應用後,您只能直接調用AgendaActivity。其他人將無法工作。正如其他海報注意到的,您可以直接與光標進行交互以讀取/創建事件,但您無法將日曆應用程序調用到除AgendaView外的其他視圖。其原因是,開發商已經有限,在清單的校準應用能力通過以下活動定義:

<activity android:name="MonthActivity" android:label="@string/month_view" 
     android:theme="@style/CalendarTheme" /> 
    <activity android:name="WeekActivity" android:label="@string/week_view" 
     android:theme="@style/CalendarTheme" /> 
    <activity android:label="@string/day_view" android:name="DayActivity"  
     android:theme="@style/CalendarTheme"/> 
    <activity android:name="AgendaActivity" android:label="@string/agenda_view" 
     android:theme="@android:style/Theme.Light" 
     android:exported="true" /> 

請注意,只有AgendaActivity有機器人:出口=「真」。如果您嘗試調用其他活動,您將獲得權限異常。

但是,你可以調用AgendaActivity到任意一天的用下面的代碼:

Calendar tempCal = (Calendar) mCalendar.clone(); 
    tempCal.set(year, month, day); 
    Intent calendarIntent = new Intent() ; 
    calendarIntent.putExtra("beginTime", tempCal.getTimeInMillis()); 
    calendarIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity"); 
    startActivity(calendarIntent); 
3

使用意圖,查看日曆數據

日曆提供商提供了兩種不同的方式使用VIEW意圖:

To open the Calendar to a particular date. 
To view an event. 

添加的權限來體現

<uses-permission android:name="android.permission.READ_CALENDAR" /> 
<uses-permission android:name="android.permission.WRITE_CALENDAR" /> 

下面是顯示瞭如何打開日曆到特定的日期的示例:

// A date-time specified in milliseconds since the epoch. 
long startMillis; 
... 
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); 

下面是顯示瞭如何打開用於觀看事件的例子:

long eventID = 208; 
... 
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); 
Intent intent = new Intent(Intent.ACTION_VIEW) 
    .setData(uri); 

    startActivity(intent); 

Is it possible to launch the Calendar to a specific week or day?

所以,現在有可能,但需要min API 14

欲瞭解更多詳情,請訪問http://developer.android.com/guide/topics/providers/calendar-provider.html#intents

8

您可以通過兩種方式打開日曆視圖:

1)由特定事件

特定日期 2)對於這一點,你需要添加下面的兩個權限

<uses-permission android:name="android.permission.READ_CALENDAR" /> 
    <uses-permission android:name="android.permission.WRITE_CALENDAR" /> 

1)通過特定的日期:

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

2)通過特定事件:

long eventID = 200; 

Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); 
Intent intent = new Intent(Intent.ACTION_VIEW).setData(uri); 
startActivity(intent); 

注:CalendarContract內容提供商加入到Android SDK的API級別14欲瞭解更多信息,你可以訪問這個link

相關問題