安卓:如何在设备日历上添加未来日期事件和提醒



我可以在当前日期设置事件和提醒,但当我使用未来日期时间戳在日历上设置未来事件时,它不会添加/显示该未来日期的任何事件。这是我添加未来日期事件的代码:

 btnSetEvent.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Date d1 = new Date(1472570400);//Tue, 30 Aug 2016 15:20:00 GMT
            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(d1);
            Date d2 = new Date(1472574000);//Tue, 30 Aug 2016 16:20:00 GMT
            Calendar cal2 = Calendar.getInstance();
            cal2.setTime(d2);
            Uri EVENTS_URI = Uri.parse("content://com.android.calendar/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(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());                
            values.put("dtstart", cal1.getTimeInMillis() ); // event starts at Tue, 30 Aug 2016 15:20:00
            values.put("dtend", cal2.getTimeInMillis()); // ends at Tue, 30 Aug 2016 16:20:00 GMT
            System.out.println("ALARM TIMES START : " + cal1.getTimeInMillis());
            System.out.println("ALARM TIMES END : "+cal2.getTimeInMillis());
            values.put("description", "Reminder description");                
            values.put("hasAlarm", 1);
            Uri event = cr.insert(EVENTS_URI, values);
            // reminder insert                
            Uri REMINDERS_URI = Uri.parse("content://com.android.calendar/reminders");
            values = new ContentValues();
            values.put( "event_id", Long.parseLong(event.getLastPathSegment()));               
            values.put( "method", 1);
            values.put( "minutes", 1); //Notify before the exact time
            cr.insert( REMINDERS_URI, values );
        }
    });
}

提前谢谢。

这是因为输入日期过长。我调试了它们,它们显示的是1970年1月16日,而不是2016年8月30日。

您不需要使用Date类。只需拨打:

Calendar cal1 = new GregorianCalendar(2016, Calendar.AUGUST, 30, 15, 20);
Calendar cal2 = new GregorianCalendar(2016, Calendar.AUGUST, 30, 16, 20);

此外,如果您有一个长值,您可以调用cal1.setTimeInMillis(millis)

最新更新