【问题标题】:How to set the event to the device calendar through user app and get the reminder in android google calendar?如何通过用户应用程序将事件设置到设备日历并在 android 谷歌日历中获取提醒?
【发布时间】:2023-03-15 22:43:02
【问题描述】:

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

请问有人可以在这方面帮助我吗?

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

【问题讨论】:

  • 我只是想知道,有没有什么办法可以用我提供的值保存这个事件而不会被重定向到创建事件活动?也就是说,我想创建这个事件并从我的应用程序中保存这个事件,而不是让我的用户移动到另一个应用程序。这可能吗?

标签: android


【解决方案1】:

是的,我明白了...试试这段代码

将此代码放入 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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多