如何使用Intent(Froyo)启动Android日历应用程序
我想从android应用程序打开日历应用程序。当我在网上搜索时,我得到的只是使用intent创建新事件。我可以找到打开联系人和画廊等的意向 是否可以将日历启动到特定的一周或一天?如果可能的话,有人能帮我一下吗如何使用Intent(Froyo)启动Android日历应用程序,android,calendar,android-intent,Android,Calendar,Android Intent,我想从android应用程序打开日历应用程序。当我在网上搜索时,我得到的只是使用intent创建新事件。我可以找到打开联系人和画廊等的意向 是否可以将日历启动到特定的一周或一天?如果可能的话,有人能帮我一下吗 提前感谢。通过一个乏味的实验过程,我发现: Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType("vnd.android.cursor.item/event"); intent.putExtra("title",
提前感谢。通过一个乏味的实验过程,我发现:
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);
Intent calendarIntent=newintent()
calendarIntent.setClassName(“com.android.calendar”、“com.android.calendar.AgendaActivity”)代码>
…为我启动日历的议程活动而工作。没有
尝试过,但可能是com.android.calendar.DayActivity,
.WeekActivity和.MonthActivity将启动相应的
活动。代理活动加载“议程”视图
根据我的经验,你不能深入链接到股票Android中的日、周和月活动,但是你可以使用“LaunchActivity”加载上次打开的视图。在Android源代码中查看日历应用后,你只能直接调用AgendaActivity。其他的都不行。正如其他海报所指出的,您可以直接与光标交互以读取/创建事件,但不能将日历应用程序调用到AgendaView以外的视图。原因是开发人员使用以下活动定义限制了Cal应用程序清单中的该功能:
<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" />
使用意图查看日历数据
日历提供程序提供了两种不同的方式来使用视图意图:
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" />
以下示例显示了如何打开事件进行查看:
long eventID = 208;
...
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
Intent intent = new Intent(Intent.ACTION_VIEW)
.setData(uri);
startActivity(intent);
是否可以将日历启动到特定的一周或一天?
因此,现在这是可能的,但需要min API 14
有关详细信息,请访问您可以通过以下两种方式打开日历视图:
1) 按特定日期
2) 按特定事件
为此,您必须添加以下两个权限
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
2) 按特定事件:
long eventID = 200;
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
Intent intent = new Intent(Intent.ACTION_VIEW).setData(uri);
startActivity(intent);
注意:CalendarContract
内容提供者已添加到API级别14的Android SDK中。有关详细信息,您可以访问此当我尝试此操作时,出现以下错误..原因:android.content.ActivityNotFoundException:找不到可处理意图的活动{act=android.Intent.action.EDIT typ=vnd.android.cursor.item/event(has extras)}…你能给出一个解决方案吗?@TijoKVarghese:确保你在Android手机上运行或调试你的应用程序,而不是在模拟器上。我听说Android日历没有默认打包到emulator映像中。好的。我会用实际设备检查一下。到目前为止,我只在Android emulator上进行了测试。我尝试过,但它给了我一个权限被拒绝的例外。这在API=>14上非常有效。你知道视图意图是否可以处理除“时间”之外的其他参数吗?例如,是否打开一个时间段(周、月)?
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
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);
long eventID = 200;
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
Intent intent = new Intent(Intent.ACTION_VIEW).setData(uri);
startActivity(intent);