如何在Android中设置提醒?

我试图为Android构建日历应用程序。我在中间被击中。我已经设法从用户​​检索信息,如时间和任务。

我不知道如何添加到Android事件。有什么像setEvent或类似的东西吗?

不是,如果你想透明地将它添加到用户的日历,它比仅仅调用一个方法更复杂。

你有几个选择;

>调用在日历上添加事件的意图
这将弹出日历应用程序,并让用户添加事件。您可以传递一些参数以预填充字段:

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", false);
intent.putExtra("rrule", "FREQ=DAILY");
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "A Test Event from android app");
startActivity(intent);

或者更复杂一个:
>使用此方法获取对日历的引用
(强烈建议不要使用此方法,因为它可能会破坏在较新的Android版本):

private String getCalendarUriBase(Activity act) {

    String calendarUriBase = null;
    Uri calendars = Uri.parse("content://calendar/calendars");
    Cursor managedCursor = null;
    try {
        managedCursor = act.managedQuery(calendars, null, null, null, null);
    } catch (Exception e) {
    }
    if (managedCursor != null) {
        calendarUriBase = "content://calendar/";
    } else {
        calendars = Uri.parse("content://com.android.calendar/calendars");
        try {
            managedCursor = act.managedQuery(calendars, null, null, null, null);
        } catch (Exception e) {
        }
        if (managedCursor != null) {
            calendarUriBase = "content://com.android.calendar/";
        }
    }
    return calendarUriBase;
}

并以这种方式添加事件和提醒:

// get calendar
Calendar cal = Calendar.getInstance();     
Uri EVENTS_URI = Uri.parse(getCalendarUriBase(this) + "events");
ContentResolver cr = getContentResolver();

// event insert
ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put("title", "Reminder Title");
values.put("allDay", 0);
values.put("dtstart", cal.getTimeInMillis() + 11*60*1000); // event starts at 11 minutes from now
values.put("dtend", cal.getTimeInMillis()+60*60*1000); // ends 60 minutes from now
values.put("description", "Reminder description");
values.put("visibility", 0);
values.put("hasAlarm", 1);
Uri event = cr.insert(EVENTS_URI, values);

// reminder insert
Uri REMINDERS_URI = Uri.parse(getCalendarUriBase(this) + "reminders");
values = new ContentValues();
values.put( "event_id", Long.parseLong(event.getLastPathSegment()));
values.put( "method", 1 );
values.put( "minutes", 10 );
cr.insert( REMINDERS_URI, values );

您还需要将这些权限添加到此方法的清单中:

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

更新:ICS问题

上面的例子使用未公开的日历API,新的公共日历API已经为ICS发布,因此,为了目标新的Android版本,你应该使用CalendarContract

更多信息可以在this blog post找到。

http://stackoverflow.com/questions/5976098/how-to-set-a-reminder-in-android

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何在Android中设置提醒?