我正在尝试做 3 件事。根据首选项中的选择,我想打开已安装的日历应用程序,在已安装的日历中显示事件详细信息或使用所需的已安装日历应用程序创建新事件。用户应该能够通过 android 框架的决策对话框来决定使用哪个应用程序。
出于测试目的,除了股票谷歌日历应用程序之外,我还安装了 aCalendar 和 Jorte。目前只有“创建新事件”列出了所有 3 个应用程序来执行此操作。
Intent intent = null;
intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
使用该操作仅打开日历或日历详细信息时,选择对话框中仅显示日历和谷歌日历。两者都工作正常。
这是我用来创建意图的完整方法:
private Intent createCalendarIntent()
{
long startMillis = System.currentTimeMillis();
Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
builder.appendPath("time");
ContentUris.appendId(builder, startMillis);
Intent intent = null;
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI,
calHandle.getEventID(0));
switch(getPreferenceIntentAction())
{
case 1: intent = new Intent(Intent.ACTION_VIEW);
intent.setType("vnd.android.cursor.item/event");
intent.setData(builder.build());
break;
case 2: intent = new Intent(Intent.ACTION_VIEW);
intent.setType("vnd.android.cursor.item/event");
intent.setData(uri);
break;
case 3: intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
break;
default:
break;
}
其中案例 1 只是在实际一周打开日历,案例 2 是显示事件详细信息,案例 3 是创建一个新事件。
我不知道为什么 Jorte 没有出现。我认为这也会发生在其他日历应用程序上。
如何在不读取设备上所有已安装的应用程序并过滤日历应用程序的情况下也显示 op Jorte(以及其他应用程序),让用户在偏好设置中但在内置对话框中做出决定。
提前致谢!