我想從android應用程序打開日曆應用程序。當我在網上搜索時,我得到的只是使用意圖創建新事件。我可以找到意圖打開聯繫人和圖片等如何使用Intent(Froyo)啓動Android日曆應用程序
是否有可能啓動日曆到特定的一週或一天?如果可能的話,有人可以幫助我。
在此先感謝。
我想從android應用程序打開日曆應用程序。當我在網上搜索時,我得到的只是使用意圖創建新事件。我可以找到意圖打開聯繫人和圖片等如何使用Intent(Froyo)啓動Android日曆應用程序
是否有可能啓動日曆到特定的一週或一天?如果可能的話,有人可以幫助我。
在此先感謝。
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);
當我試着這個我得到了以下錯誤..導致:android.content.ActivityNotFoundException:未發現處理意圖{Act = android.intent.action.EDIT typ = vnd.android。 cursor.item/event(有額外功能)} ..請給我一個解決方案離子在這。? – 2012-01-05 12:10:12
@TijoKVarghese:確保您在Android手機中運行或調試您的應用程序,而不是模擬器。我聽說Android日曆並未默認打包到模擬器映像中。 – 2012-01-10 10:58:47
通過繁瑣的試驗的過程中,我發現:
Intent calendarIntent = new Intent() ;
calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity");
...對我的作品推出日曆的日程活動。嘗試過沒有 ,但也許com.android.calendar.DayActivity, .WeekActivity和.MonthActivity將啓動相應的 活動。
AgendaActivity加載「議程」視圖。
根據我的經驗,您不能深入鏈接到股票Android中的日,周和月活動,但是您可以使用加載最後打開的視圖的「LaunchActivity」。
在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);
使用意圖,查看日曆數據
日曆提供商提供了兩種不同的方式使用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
您可以通過兩種方式打開日曆視圖:
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
我試過了,但它給了我一個權限被拒絕異常 – 2012-04-02 07:48:42