0

Hallo Ich verwende den folgenden Code, um ein Ereignis zu meinem Android-Kalender mit Intent hinzuzufügen.CalendarContract.Events.CALENDAR_ID speichert das Ereignis nicht in der angegebenen Calendar_Id in Android mit Intent

Calendar cal = Calendar.getInstance(); 
     Intent intent = new Intent(Intent.ACTION_INSERT); // Even Tried 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", mtodoText); 
     intent.putExtra(CalendarContract.Events.CALENDAR_ID,3); 
     startActivity(intent); 

Aber das Problem ist, dass dieses Ereignis nicht gespeichert oder erstellt zum calendar_id = 3, aber trotz, dass sie die calendar_id = 1 erstellt wird ich den folgenden Code bin mit all meinem Kalender abrufen Veranstaltungen, Und wenn ich die Log-Katze Ausgabe überprüfen es zeigt das Ereignis in calendar_id erstellt 1.

Uri EVENTS_URI = Uri.parse(getCalendarUriBase(true) + "events"); 
     String sSelection = "((" + CalendarContract.Events.DELETED + " != 1))"; 

     /*String sSelection = "((" + CalendarContract.Events.CALENDAR_ID + " = 3) AND (" 
       + CalendarContract.Events.DELETED + " != 1))";*/ 

     cur = getActivity().getContentResolver().query(EVENTS_URI, null, sSelection, null, "_id"); 

     if(cur!=null){ 
      while (cur.moveToNext()) { 
       String taskname=cur.getString(cur.getColumnIndex(CalendarContract.Events.TITLE)); 
       String taskdate=cur.getString(cur.getColumnIndex(CalendarContract.Events.DTSTART)); 
       String s_id=cur.getString(cur.getColumnIndex(CalendarContract.Events._ID)); 
       String taskstatusflag=cur.getString(cur.getColumnIndex(CalendarContract.Events.HAS_ALARM)); 

       Log.e("Title:", "taskname: " + taskname); 
       Log.e("DTSTART","taskdate: " + taskdate); 
       Log.e("_ID","s_Id: "+ s_id); 
       Log.e("HAS ALARM", "taskstatusflag: " + taskstatusflag); 
       Log.e("Calender ID:",cur.getString(cur.getColumnIndex(CalendarContract.Events.CALENDAR_ID))+""); 
} 
} 

Mein Logcat ist wie folgt aufgeteilt: -

05-31 17:17:54.039 6518-6518/com.myapp E/Title:﹕ taskname: test1 
     05-31 17:17:54.039 6518-6518/com.myapp E/DTSTART﹕ taskdate: 1464608459000 
     05-31 17:17:54.039 6518-6518/com.myapp E/_ID﹕ s_Id: 22162 
     05-31 17:17:54.039 6518-6518/com.myapp E/HAS ALARM﹕ taskstatusflag: 0 
     05-31 17:17:54.039 6518-6518/com.myapp E/Calender ID:﹕ 1 
     05-31 17:17:54.039 6518-6518/com.myapp E/Title:﹕ taskname: test Cal 3 
     05-31 17:17:54.039 6518-6518/com.myapp E/DTSTART﹕ taskdate: 1464684678000 
     05-31 17:17:54.039 6518-6518/com.myapp E/_ID﹕ s_Id: 22163 
     05-31 17:17:54.039 6518-6518/com.myapp E/HAS ALARM﹕ taskstatusflag: 0 
     05-31 17:17:54.039 6518-6518/com.myapp E/Calender ID:﹕ 1 
     05-31 17:17:54.039 6518-6518/com.myapp E/Title:﹕ taskname: test guest 
     05-31 17:17:54.039 6518-6518/com.myapp E/DTSTART﹕ taskdate: 1464694253000 
     05-31 17:17:54.039 6518-6518/com.myapp E/_ID﹕ s_Id: 22164 
     05-31 17:17:54.039 6518-6518/com.myapp E/HAS ALARM﹕ taskstatusflag: 0 
     05-31 17:17:54.039 6518-6518/com.myapp E/Calender ID:﹕ 1 
     05-31 17:17:54.039 6518-6518/com.myapp E/Title:﹕ taskname: test Cal 3 
     05-31 17:17:54.039 6518-6518/com.myapp E/DTSTART﹕ taskdate: 1464694676000 
     05-31 17:17:54.039 6518-6518/com.myapp E/_ID﹕ s_Id: 22165 
     05-31 17:17:54.039 6518-6518/com.myapp E/HAS ALARM﹕ taskstatusflag: 0 
     05-31 17:17:54.039 6518-6518/com.myapp E/Calender ID:﹕ 1 
     05-31 17:17:54.039 6518-6518/com.myapp E/Title:﹕ taskname: test Cal 33 
     05-31 17:17:54.039 6518-6518/com.myapp E/DTSTART﹕ taskdate: 1464695268000 
     05-31 17:17:54.039 6518-6518/com.myapp E/_ID﹕ s_Id: 22166 
     05-31 17:17:54.039 6518-6518/com.myapp E/HAS ALARM﹕ taskstatusflag: 0 
     05-31 17:17:54.039 6518-6518/com.myapp E/Calender ID:﹕ 1 

Was shou ld ich tun, um explizit das Ereignis in Calendar_Id = 3, mit der Absicht zu erstellen.

Antwort

1

Was Sie versuchen, ist nicht möglich. Der Benutzer wird immer in der Lage sein, die Kalenderauswahl zu ändern, wenn Sie die Intent starten, um ein Ereignis zu erstellen (genauso wie er jeden anderen Wert des Ereignisses vor dem Speichern ändern kann).

Es gibt jedoch eine Problemumgehung. Sie können ein Platzhalterereignis erstellen und eine Intent aufrufen, um sie zu bearbeiten. Viele Kalender-Apps erlauben es nicht, vorhandene Ereignisse in einen anderen Kalender zu verschieben. Dies würde den Zweck erfüllen (es sei denn, der Benutzer verwendet eine Kalender-App eines Drittanbieters, die das Verschieben des Ereignisses in einen anderen Kalender unterstützt).

Ich habe diese Problemumgehung in Specify calendar in Android event creation intent umrissen. Übrigens ist diese Frage das erste Ergebnis, wenn ich den Titel Ihrer Frage google, was den Downvote erklären könnte.