2016-08-02 27 views
1

Ich bin in der Lage, Ereignis und Erinnerung im aktuellen Datum zu setzen, aber wenn ich zukünftige Datum Zeitstempel für die Einstellung zukünftiges Ereignis im Kalender verwenden wird, wird kein Ereignis an diesem zukünftigen Datum hinzugefügt/gezeigt. Hier ist mein Code für das Hinzufügen zukünftiges Datum Ereignis:Android: Wie fügt man zukünftige Termine und Erinnerungen in den Gerätekalender ein?

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); 
     } 
    }); 
} 

Vielen Dank im Voraus.

Antwort

2

Dies liegt daran, dass Ihre langen Eingabedaten falsch sind. Ich debugge sie und sie zeigen 16 Jan 1970, nicht 30 Aug 2016.

Sie müssen Date Klasse nicht verwenden. Rufen Sie einfach an:

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

Auch wenn Sie einen langen Wert haben, können Sie cal1.setTimeInMillis(millis) aufrufen können.

+0

Dank ich fixiere meine Zeitstempel lange Wert und ** cal1.setTimeInMillis (Millis) ** arbeitete für mich. – Harry