如何通过用户应用程序将事件设置为设备日历并在Android谷歌日历中获取提醒?

时间:2014-06-10 06:14:06

标签: android

我想通过我的应用程序将事件设置为设备日历。我需要从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数据并传递意图)。

在这方面,请有人帮助我吗?

请有人帮我这方面吗?

1 个答案:

答案 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());