1

我有以下有效的代码。

但我不希望出现确认

希望它自动进入日历上的事件

有人有建议

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

1 回答 1

5

通过使用意图,您将控制权交给日历应用程序以创建实际事件。日历应用程序确定如何处理意图,在这种情况下,通过抛出一个确认弹出窗口。

虽然使用意图是与用户日历交互的推荐方式,但您也可以直接这样做。这将切断对日历应用程序的调用并避免弹出窗口。缺点是您需要请求日历权限才能这样做。

这是日历提供程序教程页面中的示例:

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
//
//
于 2012-09-13T02:57:45.953 回答