android - 在 Android 事件创建 Intent 中指定日历

标签 android android-intent android-calendar

我通过以下代码触发日历事件的创建:

Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setData(CalendarContract.Events.CONTENT_URI);
startActivity(intent);

但我想指定应该使用哪个日历来创建事件(即在事件创建屏幕中设置日历下拉列表的初始值)。

我已尝试提供 ACCOUNT_TYPEACCOUNT_NAMECALENDAR_ID

intent.putExtra(CalendarContract.Events.ACCOUNT_TYPE, accountType);
intent.putExtra(CalendarContract.Events.ACCOUNT_NAME, accountName);
intent.putExtra(CalendarContract.Events.CALENDAR_ID, calendarId);

但它对日历下拉初始值没有影响。

是否可以在 Activity 创建 Intent 中指定日历?

最佳答案

我相信,没有可靠的方法可以仅通过 Intent 来实现这一点。您可能会遇到各种可能支持也可能不支持此功能的日历应用程序。

如果您不介意用户无法更改日历,您可以使用一个简单的技巧来实现:

只需在您想要的日历中创建一个“占位符”事件(如 Android Developer Guide 中所述)并为此事件触发 Intent.ACTION_EDIT Intent相反。

这里有一些(未经测试的)代码来展示它是如何工作的:

ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();

// provide an initial time
long now=System.currentTimeMillis();
values.put(Events.DTSTART, now);
values.put(Events.DTEND, now+3600000);
values.put(Events.TITLE, "");
values.put(Events.CALENDAR_ID, calendarId);
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());

// create the "placeholder" event
Uri uri = cr.insert(Events.CONTENT_URI, values);

// get the event ID that is the last element in the Uri
long eventId = Long.parseLong(uri.getLastPathSegment());

// launch the editor to edit the "placeholder" event
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setData(ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventId));
startActivityForResult(intent, 0);

edit Intent 可能不会返回一个状态,告诉您事件是否已保存,或者用户是否在未保存的情况下关闭了编辑器。所以你应该回读事件并检查它是否已被用户修改,如果没有被更改则删除它。

关于android - 在 Android 事件创建 Intent 中指定日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36078949/

相关文章:

android - 如何在android中获取字符的Unicode

android - 收听 android 日历更改。 (同步/删除/插入等。)

android - 如何在Android中使用自定义日历 View 以及如何设置提醒提醒?

android - 在 Android 中的特定日期创建日历事件?

android - 从 AndEngine Repository 中获取示例的步骤是什么

android - 为什么没有找到处理Intent的Activity?

android - 每次我发出 http 请求时,应用程序都会崩溃

android - 初学者 - 在另一个类中使用一个类中定义的变量

Android 应用到应用通信

java - 我可以在 finish() 上传递额外的 Intent 吗?