访问Google日历时出现空指针异常

时间:2011-08-23 02:18:11

标签: java android debugging calendar

我正在编写一个需要将事件插入Google日历的Android应用。我在我的两个安卓手机中运行我的应用程序而且都很成功。但是,收到了其他人的一些崩溃报告。它们在以下代码的最后一行中有空指针异常

(顺便说一句,我已经按照Is there a way to access the calendar's entries without using gdata-java-client?处理了两个不同的谷歌日历URI。)

整个源代码文件:http://gonow.no-ip.org/hkpl/GoogleCalendar.java

我通过这个

在另一个类中调用函数addEvent
GoogleCalendar.addEvent(getContentResolver(),EVENT_TITLE,CONTENT);

提取:

ContentValues event = new ContentValues();
event.put("title", title);
event.put("description", description);
event.put("calendar_id",calId);      
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, 1);     
long start = cal.getTime().getTime();
event.put("dtstart", start);        
cal.add(Calendar.DAY_OF_MONTH, 1);  
long end = cal.getTime().getTime();        
event.put("dtend", end);        
event.put("hasAlarm",1); 
event.put("allDay", 1);           
Uri newEvent = cr.insert(Uri.parse(calanderEventURL), event); <-- exception here

此处崩溃报告

  

java.lang.RuntimeException:执行时发生错误   doInBackground()在android.os.AsyncTask $ 3.done(AsyncTask.java:200)at at   java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:274)   at java.util.concurrent.FutureTask.setException(FutureTask.java:125)   at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:308)   在java.util.concurrent.FutureTask.run(FutureTask.java:138)at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)   在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:581)   在java.lang.Thread.run(Thread.java:1019)引起:   java.lang.NullPointerException at   android.os.Parcel.readException(Parcel.java:1328)at   android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)   在   android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)   在   android.content.ContentProviderProxy.insert(ContentProviderNative.java:408)   在android.content.ContentResolver.insert(ContentResolver.java:604)at   ming.hkpl.GoogleCalendar.addEvent(GoogleCalendar.java:93)

1 个答案:

答案 0 :(得分:1)

通常,请使用以下过程:

  • 使用公司名称空间(ming.hkpl.GoogleCalendar.addEvent)查找堆栈跟踪底部的故障行号
  • 转到IDE或文本编辑器中堆栈跟踪中提到的文件的行号
    • 添加断点
    • 编译代码
    • 运行jdb OR
  • 将print语句添加到上一行,打印引发错误的行中引用的变量。例如:

    System.out.println("Hi");
    System.out.println(driver);
    
  • 重建代码

<强>参考