将事件添加到android日历但没有提示(没有弹出窗口)

时间:2012-09-13 02:06:37

标签: android events calendar

我有以下代码可以使用。

但我不希望确认出现

希望它自动在日历上输入活动

有人提出建议

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);     

1 个答案:

答案 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
//
//