【问题标题】:Unable to integrate Google Calendar API in Android app无法在 Android 应用程序中集成 Google Calendar API
【发布时间】:2011-06-14 00:50:24
【问题描述】:

几天来,我一直在尝试将 Google 日历集成到我的 Android 应用中,但收效甚微。我已经实现了 GData API,并将他们提供的代码用于测试目的,但不断收到 SAXParser 错误,如下所示。我需要做的就是在用户的日历中创建新事件。

01-23 19:10:40.420: WARN/XmlParser(28605): javax.xml.parsers.ParserConfigurationException: org.xml.sax.SAXNotRecognizedException: http://xml.org/sax/features/external-parameter-entities
01-23 19:10:40.420: WARN/XmlParser(28605): javax.xml.parsers.ParserConfigurationException: org.xml.sax.SAXNotRecognizedException: http://xml.org/sax/features/external-parameter-entities
01-23 19:10:40.420: WARN/XmlParser(28605):     at org.apache.harmony.xml.parsers.SAXParserFactoryImpl.newSAXParser(SAXParserFactoryImpl.java:84)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.util.XmlParser.parse(XmlParser.java:682)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.util.XmlParser.parse(XmlParser.java:576)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.data.BaseEntry.parseAtom(BaseEntry.java:1015)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:59)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:39)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.wireformats.input.CharacterParser.parse(CharacterParser.java:100)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.wireformats.input.XmlInputParser.parse(XmlInputParser.java:52)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:66)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:34)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.client.Service.parseResponseData(Service.java:2165)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.client.Service.parseResponseData(Service.java:2098)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.client.Service.insert(Service.java:1410)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.google.gdata.client.GoogleService.insert(GoogleService.java:606)
01-23 19:10:40.420: WARN/XmlParser(28605):     at <packagename>.CalendarDialog.addToCalendar(CalendarDialog.java:160)
01-23 19:10:40.420: WARN/XmlParser(28605):     at <packagename>.CalendarDialog.onClick(CalendarDialog.java:125)
01-23 19:10:40.420: WARN/XmlParser(28605):     at android.view.View.performClick(View.java:2421)
01-23 19:10:40.420: WARN/XmlParser(28605):     at android.view.View$PerformClick.run(View.java:8869)
01-23 19:10:40.420: WARN/XmlParser(28605):     at android.os.Handler.handleCallback(Handler.java:587)
01-23 19:10:40.420: WARN/XmlParser(28605):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-23 19:10:40.420: WARN/XmlParser(28605):     at android.os.Looper.loop(Looper.java:143)
01-23 19:10:40.420: WARN/XmlParser(28605):     at android.app.ActivityThread.main(ActivityThread.java:5097)
01-23 19:10:40.420: WARN/XmlParser(28605):     at java.lang.reflect.Method.invokeNative(Native Method)
01-23 19:10:40.420: WARN/XmlParser(28605):     at java.lang.reflect.Method.invoke(Method.java:521)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-23 19:10:40.420: WARN/XmlParser(28605):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-23 19:10:40.420: WARN/XmlParser(28605):     at dalvik.system.NativeStart.main(Native Method)
01-23 19:10:40.420: WARN/System.err(28605): com.google.gdata.util.ParseException: org.xml.sax.SAXNotRecognizedException: http://xml.org/sax/features/external-parameter-entities
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.util.XmlParser.parse(XmlParser.java:708)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.util.XmlParser.parse(XmlParser.java:576)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.data.BaseEntry.parseAtom(BaseEntry.java:1015)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:59)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:39)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.wireformats.input.CharacterParser.parse(CharacterParser.java:100)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.wireformats.input.XmlInputParser.parse(XmlInputParser.java:52)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:66)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:34)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.client.Service.parseResponseData(Service.java:2165)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.client.Service.parseResponseData(Service.java:2098)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.client.Service.insert(Service.java:1410)
01-23 19:10:40.420: WARN/System.err(28605):     at com.google.gdata.client.GoogleService.insert(GoogleService.java:606)
01-23 19:10:40.430: WARN/System.err(28605):     at <packagename>.CalendarDialog.addToCalendar(CalendarDialog.java:160)
01-23 19:10:40.430: WARN/System.err(28605):     at <packagename>.CalendarDialog.onClick(CalendarDialog.java:125)
01-23 19:10:40.430: WARN/System.err(28605):     at android.view.View.performClick(View.java:2421)
01-23 19:10:40.430: WARN/System.err(28605):     at android.view.View$PerformClick.run(View.java:8869)
01-23 19:10:40.430: WARN/System.err(28605):     at android.os.Handler.handleCallback(Handler.java:587)
01-23 19:10:40.430: WARN/System.err(28605):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-23 19:10:40.430: INFO/dalvikvm(28605): Jit: resizing JitTable from 4096 to 8192
01-23 19:10:40.440: WARN/System.err(28605):     at android.os.Looper.loop(Looper.java:143)
01-23 19:10:40.440: WARN/System.err(28605):     at android.app.ActivityThread.main(ActivityThread.java:5097)
01-23 19:10:40.440: WARN/System.err(28605):     at java.lang.reflect.Method.invokeNative(Native Method)
01-23 19:10:40.440: WARN/System.err(28605):     at java.lang.reflect.Method.invoke(Method.java:521)
01-23 19:10:40.440: WARN/System.err(28605):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-23 19:10:40.440: WARN/System.err(28605):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-23 19:10:40.440: WARN/System.err(28605):     at dalvik.system.NativeStart.main(Native Method)
01-23 19:10:40.440: WARN/System.err(28605): Caused by: javax.xml.parsers.ParserConfigurationException: org.xml.sax.SAXNotRecognizedException: http://xml.org/sax/features/external-parameter-entities
01-23 19:10:40.450: WARN/System.err(28605):     at org.apache.harmony.xml.parsers.SAXParserFactoryImpl.newSAXParser(SAXParserFactoryImpl.java:84)
01-23 19:10:40.450: WARN/System.err(28605):     at com.google.gdata.util.XmlParser.parse(XmlParser.java:682)
01-23 19:10:40.450: WARN/System.err(28605):     ... 25 more

我用来添加事件的代码是:

void addToCalendar() throws IOException, ServiceException
    {
        CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
        myService.setUserCredentials("<username>@gmail.com", "<password>");

    URL postUrl =
          new URL("https://www.google.com/calendar/feeds/<username>@gmail.com/private/full");
        CalendarEventEntry myEntry = new CalendarEventEntry();

        myEntry.setTitle(new PlainTextConstruct("Tennis with Beth"));
        myEntry.setContent(new PlainTextConstruct("Meet for a quick lesson."));

        DateTime startTime = DateTime.parseDateTime("2011-01-26T15:00:00+05:30");
        DateTime endTime = DateTime.parseDateTime("2011-01-26T15:12:00+05:30");
        When eventTimes = new When();
        eventTimes.setStartTime(startTime);
        eventTimes.setEndTime(endTime);
        myEntry.addTime(eventTimes);

        // Send the request and receive the response:
        CalendarEventEntry insertedEntry = myService.insert(postUrl, myEntry);
}

知道是什么导致了问题吗?另外,如果有人运行了日历 API,他们可以提供一些帮助吗?就像我说的,我只需要添加事件(单次和重复)

谢谢!

【问题讨论】:

    标签: android google-calendar-api


    【解决方案1】:

    你可以使用 GoogleApiJavaClient 看看这里为什么: http://code.google.com/p/gdata-java-client/wiki/MigratingToGoogleApiJavaClient

    在这里查看更多资源 http://code.google.com/p/google-api-java-client/

    【讨论】:

      【解决方案2】:

      GData API 无法在您的 android 上运行,请使用 google api 客户端,从此处:http://code.google.com/p/google-api-java-client/wiki/Android

      见:Best option for using the GData APIs on Android?

      【讨论】:

      • 虽然我读过这篇文章,但我发现比任何事情都更奇怪的是 GData 现在可以完美地为我的应用程序工作(至少是日历位)。正如您在日志中看到的,我收到的只是警告。该功能本身运行流畅,只有一个小的 UI 错误意味着我看不到最终产品。
      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多