从android中的另一个应用程序打开默认日历应用

时间:2012-12-27 10:31:15

标签: android calendar

我正在尝试从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);

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

提前致谢:)

2 个答案:

答案 0 :(得分: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"。如果您尝试调用其他活动,则会获得权限例外。

答案 1 :(得分:0)

首先,您应该使用由Calendar Provider定义的日历意图。这将使其更具未来性,因为对您想要启动的活动类进行硬编码并不是一个好主意。除此之外,它可能因设备而异。

可以找到HERE的完整文档。

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