批量添加事件到谷歌日历

时间:2013-01-16 07:51:47

标签: android google-calendar-api google-api-java-client android-calendar

您好我正在尝试使用google-api-java-client和calender API服务为Android应用添加事件到日历。我使用Yaniv Inbar创建的calendersample项目作为模板,效果很好。将1个事件插入所选日历时效果很好但是当我尝试批量添加事件到日历时会出现非法状态异常。

在示例中,您可以批量添加这样的日历。 全班可以在AsyncBatchInsertCalendars.java

找到
@Override
protected void doInBackground() throws IOException {
   BatchRequest batch = client.batch();
   for (Calendar calendar : calendars) {
      client.calendars().insert(calendar).setFields(CalendarInfo.FIELDS)
      .queue(batch, new JsonBatchCallback<Calendar>() {
         public void onSuccess(Calendar calendar, GoogleHeaders headers) {
            model.add(calendar);
         }
         @Override
         public void onFailure(GoogleJsonError err, GoogleHeaders headers)
         throws IOException {
            Utils.logAndShowError(activity, CalendarSampleActivity.TAG, err.getMessage());
         }
      });
   }
   batch.execute();
}

我重写了这个课程,以便它成为事件而不是日历。如果你看一下整个班级AsyncBatchInsertEvent.java,你会看到在doInBackground方法中我也循环通过一个arraylist来创建一个事件列表。这应该被添加到要插入给定日历的批次中。

@Override
protected void doInBackground() throws IOException {
   BatchRequest batch = client.batch();
   for (Event event : events) {
      client.events().insert(calender.id, event).queue(batch, 
      new JsonBatchCallback<Event>() {
         public void onSuccess(Event event, GoogleHeaders headers) {
            //TODO show succes message.
         }
         @Override
         public void onFailure(GoogleJsonError err, GoogleHeaders headers)
         throws IOException {
            Utils.logAndShowError(activity, EventActivity.TAG, err.getMessage());
         }
      });
   }
   batch.execute();
}

如果我使用它,那么得到一个例外,应用程序崩溃

W/dalvikvm(21030): threadid=20: thread exiting with 
uncaught exception (group=0x40c19930)
E/AndroidRuntime(21030): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(21030): java.lang.RuntimeException: An error occured 
while executing doInBackground()

可以在pastebin log.txt找到错误的完整堆栈跟踪。有谁知道如何解决这个问题或我是否错误地实现了代码?整个代码可以在pastbin AsyncBatchInsertEvent.java

找到

1 个答案:

答案 0 :(得分:1)

愚蠢的我,arraylist事件是空的,因为我检查了一个字符串==字符串而不是string.equels(字符串)。