我正在创建一个包含时间表的计划。我的问题是,当我需要创建一个新事件时,我会通过此代码调用该活动。
public void callEventDialog(int line, int column){
Intent intent = new Intent(Intent.ACTION_EDIT);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(startWeek.getTimeInMillis() + column * DIM + line * 30 * 60 * 1000);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra(Events.TITLE, "title");
intent.putExtra(Events.DTSTART, c.getTimeInMillis());
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, c.getTimeInMillis());
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, c.getTimeInMillis() + 1800 * 1000);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
startActivityForResult(intent, 100);
}
但是当我点击确定按钮时,我不想查看日历活动。我只需要注册事件而不是日历并退出。我怎么能这样做? 感谢您的时间和帮助
答案 0 :(得分:1)
如果您想直接向日历添加活动,则需要使用内容解析程序并请求日历权限 - 不使用日历活动。
清单中的权限:
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
将事件放入数据库示例:
public static int insertEventToDb(Context context, Event event, int calendarId) {
ContentValues values = new ContentValues();
values.put(Events.CALENDAR_ID, calendarId);
values.put(Events.TITLE, event.getName());
values.put(Events.EVENT_LOCATION, event.getLocation());
values.put(Events.DTSTART, event.getStartDate().getTime());
values.put(Events.DTEND, event.getEndDate().getTime());
values.put(Events.DESCRIPTION, event.getDescription());
values.put(Events.EVENT_TIMEZONE, TimeZone.getTimeZone("GMT+1").getID());
Uri result = context.getContentResolver().insert(Events.CONTENT_URI, values);
int eventId = Integer.valueOf(result.getPathSegments().get(1));
return eventId;
}
您还需要要将数据插入的日历的ID。您可以通过使用SQLite查询来查找它或创建自己的日历(应该只通过SyncAdapter
完成)。这是另一个例子,您可能需要根据需要对其进行修改(Constants.ACCOUNT_TYPE
是我的自定义):
Uri uri = Calendars.CONTENT_URI.buildUpon()
.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, "LOCAL")
.appendQueryParameter(Calendars.ACCOUNT_TYPE, Constants.ACCOUNT_TYPE).build();
Cursor cursor = context.getContentResolver().query(uri, new String[] {Calendars._ID}, null, null, null);
您可以在Android Developers site - Calendar Provider找到更多信息。