我想通过我的应用程序将事件设置为设备日历。我需要从edittext(用户输入)获取日期和时间,并且在单击按钮(比如设置日期和时间)时,它应该作为事件保存到设备日历中。并且提供的日期和时间应该提醒应用程序用户有关该事件。
我希望原生日历能够接受用户输入和输入设置事件。因此,为此,我实现了以下代码:
public void addCalendarEvent()
{
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("allDay", true);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("UNTIL=20140404T080000Z",true);
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "A Test Event from android app");
intent.putExtra("description", "A Test Description from android app");
intent.putExtra("eventLocation", "Geolocation");
startActivity(intent);
}
我在按钮onClick()
方法中调用了此方法。我把日期硬编码为:
intent.putExtra("UNTIL=20140404T080000Z",true);
但这不起作用。但是,我不想硬编码它,它应该接受用户输入(动态它应该工作,比如获取edittext数据并传递意图)。
在这方面,请有人帮助我吗?
请有人帮我这方面吗?
答案 0 :(得分:0)
是的,我知道了......试试这段代码
将此代码放在AddEvent()
中 Calendar beginTime = Calendar.getInstance();
beginTime.set(eventBeginDate[0], eventBeginDate[1],
eventBeginDate[2],eventBeginTime[0], eventBeginTime[1]); // ?1
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(eventEndDate[0], eventEndDate[1], eventEndDate[2],
eventEndTime[0], eventEndTime[1]);
endMillis = endTime.getTimeInMillis();
ContentResolver cr = getContentResolver(); // event?
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, eventName);
values.put(Events.DESCRIPTION, eventDescription);
values.put(Events.CALENDAR_ID, calId);
values.put(Events.EVENT_TIMEZONE, "GMT+8");
Uri uri = cr.insert(Events.CONTENT_URI, values);
Long myEventsId = Long.parseLong(uri.getLastPathSegment()); // eventId
ContentResolver cr1 = getContentResolver(); // eventreminder
ContentValues values1 = new ContentValues();
values1.put(Reminders.MINUTES, reminderMinutus);
values1.put(Reminders.EVENT_ID, myEventsId);
values1.put(Reminders.METHOD, Reminders.METHOD_ALERT);
cr1.insert(Reminders.CONTENT_URI, values1); // Uri
setAlarmDeal(startMillis); // reminder?activity
showMessageDialog("?" + "\n" + uri.getLastPathSegment() + "\n"
+ uri.getAuthority());