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

Cha*_*nya 1 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);
Run Code Online (Sandbox Code Playgroud)

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

提前致谢 :)

Ant*_*met 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" />
Run Code Online (Sandbox Code Playgroud)

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

  • 有关此问题的更多信息,请尝试阅读日历应用程序的[启动器活动源](https://github.com/android/platform_packages_apps_calendar/blob/master/src/com/android/calendar/AllInOneActivity.java) (2认同)