0

嗨我正在使用以下代码使用Intent将事件添加到我的Android日历。CalendarContract.Events.CALENDAR_ID没有将事件存储在Android中的指定Calendar_Id中,使用意图

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

但问题是,这个事件不会保存或创建到CALENDAR_ID = 3,但inspite它创建于CALENDAR_ID = 1 我使用下面的代码检索所有我的日历活动,如果我检查日志猫输出它显示CALENDAR_ID创建事件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))+""); 
} 
} 

我logcat的输出如下: -

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 

守什么ld我确实要在Calendar_Id = 3,使用Intent中显式创建事件。

回答

1

你想要做的事是不可能的。当你启动Intent来创建一个事件时(就像他可以在存储它之前更改事件的其他值)一样,用户将始终能够更改日历选择。

虽然有一个解决方法。您可以创建占位符事件并调用Intent进行编辑。许多日历应用程序不允许将现有事件移至其他日历,因此这可以解决问题(除非用户使用支持将事件移至其他日历的第三方日历应用程序)。

我在Specify calendar in Android event creation intent中列出了此解决方法。顺便说一句,这个问题是第一个结果,当我谷歌问题的标题,这可能解释downvote。

相关问题