我有以下代码可以使用。
但我不希望确认出现
希望它自动在日历上输入活动
有人提出建议
calIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
calIntent.setType("vnd.android.cursor.item/event");
calIntent.putExtra(Events.TITLE, "SMS: "+contact);
calIntent.putExtra(Events.EVENT_LOCATION, "");
calIntent.putExtra(Events.DESCRIPTION, msgBody);
calIntent.putExtra(Events.HAS_ALARM, 0);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, false);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, System.currentTimeMillis());
calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, System.currentTimeMillis()+1);
context.startActivity(calIntent);
答案 0 :(得分:5)
通过使用意图,您将控制权交给日历应用程序以创建实际事件。日历应用程序确定如何处理意图,在这种情况下,通过抛出确认弹出窗口。
虽然使用意图是与用户日历交互的推荐方式,但您也可以直接使用意图。这将切断对日历应用程序的调用并避免弹出窗口。缺点是您需要请求日历权限。
以下是Calendar Provider教程页面中的示例:
long calID = 3;
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 9, 14, 8, 45);
endMillis = endTime.getTimeInMillis();
...
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, "Jazzercise");
values.put(Events.DESCRIPTION, "Group workout");
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
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());
//
// ... do something with event ID
//
//