2012-06-25 58 views
2

您好开发了一个具有一些功能的Android应用程序,以在Calendar应用程序中添加我们的事件详细信息。我的应用程序工作正常。但有些时候,它正在给予关闭并在调试时在logcat中显示错误。我使用了2个内容uri作为旧版和新版android操作系统。我如何解析“事件值必须包括一个eventTimezone”在Android日历?

那些

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

我试图解决我的问题,但没有得到成功。请为我提供此问题的最佳解决方案。我在下面添加了我的logcat。

在此先感谢。

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) 
+0

请参阅http://stackoverflow.com/q/9533757/1321873 – Rajesh

+0

感谢您的回复。我在之前看到过,但没有得到帮助。 –

+0

你可以在这个网址找到关于你的问题的一些信息: - [如何在Android中添加日历事件?](http://stackoverflow.com/questions/3721963/how-to-add-calendar-events-in-android ) - [[Android] Google日历API更改为ICS](http://bluegray-javalearning.blogspot.com.es/2012/05/androidgoogle-calendar-api-change-for.html)如果您使用Google API的> = 14你需要使用两者。 – MAJS

回答

0

试试这个:

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

尝试也增加,这可能是它的工作。

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