2012-12-27 139 views
1

我想从我的应用程序在Android中打开默认日历应用程序。我确实得到了一些关于此的链接从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); 

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

感谢提前:)

回答

5

审查日历应用程序在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有android:exported="true"。如果您尝试调用其他活动,您将获得权限异常。

+2

欲了解更多信息,请阅读日历应用程序 – thepoosh

+0

的阅读[启动程序活动源代码](https://github.com/android/platform_packages_apps_calendar/blob/master/src/com/android/calendar/AllInOneActivity.java)只需要一个有用的插件,如果你需要日历类型的观点。 [链接](http://stackoverflow.com/a/8242625/539472) – Chaitanya

0

首先,您应该使用由Calendar Provider定义的日历意图。这将使其更具前瞻性,因为对您要开始的活动进行硬编码并不是一个好主意。除此之外它可以在不同设备之间变化

这些的完整文档可以找到HERE

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

相关问题