如何在安卓日历中解决"Event values must include an eventTimezone"?



嗨,开发了一个具有一些功能的Android应用程序,可以在日历应用程序中添加我们的事件详细信息。我的应用程序工作正常。但有时它会强制关闭并在调试时在 logcat 中显示错误。我为旧版和新版本的安卓操作系统使用了 2 个内容 uri。

那些是

 if(){
    Uri calendars = Uri.parse("content://calendar/calendars");
    }
    else{
    calendars = Uri.parse("content://com.android.calendar/calendars");
    }

正在尝试解决我的问题,但没有成功。请为我提供此问题的最佳解决方案。我在下面添加了我的日志猫。

提前谢谢。

   java.lang.IllegalArgumentException: Event values must include an eventTimezone
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at android.content.ContentProviderProxy.insert(ContentProviderNative.java:415)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at android.content.ContentResolver.insert(ContentResolver.java:730)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at in.plackal.lovecyclesfree.CycleManager.setAlertOnDevice(CycleManager.java:1083)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at in.plackal.lovecyclesfree.ActivityManager.onPause(ActivityManager.java:83)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at android.app.Activity.performPause(Activity.java:4563)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1195)
    03-02 18:28:35.836: E/AndroidRuntime(1362):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2693)

尝试添加这个也可能是它可以工作的。

    eventValues.put("eventTimezone", TimeZone.getDefault().getID());

试试这个:

Calendar cal = Calendar.getInstance();  
    long l = cal.getTimeInMillis();
    long cal_Id = 1;
    ContentResolver CR = getContentResolver();

     ContentValues calEvent  = new ContentValues();
     calEvent.put(CalendarContract.Events.CALENDAR_ID,  cal_Id); // XXX pick)
     calEvent.put(CalendarContract.Events.TITLE, " Demo Data");
     calEvent.put(CalendarContract.Events.DTSTART,l);
     calEvent.put(CalendarContract.Events.DTEND, l+60 * 1000);
     calEvent.put(CalendarContract.Events.EVENT_TIMEZONE, "Indian/Christmas");  // Here choose your location time zone                  
     ContentResolver C2 = getContentResolver();
     Uri uri = C2.insert(URL, calEvent);                        
     int id = Integer.parseInt(uri.getLastPathSegment());       

最新更新