1

我正在尝试从我在 android 中的应用程序打开默认日历应用程序。我确实得到了一些关于这个的链接

  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);

这确实打开了日历。但是,我希望日历应用程序以月份模式打开(显示月份中的天数列表)。我需要这方面的帮助。

提前致谢 :)

4

2 回答 2

5

查看 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" />

请注意,只有 AgendaActivity 具有android:exported="true". 如果您尝试调用其他活动,您将获得权限异常。

于 2012-12-27T10:39:22.863 回答
0

首先,您应该使用由Calendar Provider. 这将使它更加面向未来,因为硬编码您想要开始的活动的类并不是一个好主意。除此之外,它可能因设备而异。

这些的完整文档可以在这里找到。

Intent.ACTION_VIEW不幸的是,当您仅用于查看日历时,这些似乎不允许设置特定的查看模式。

于 2012-12-27T10:39:30.693 回答