【问题标题】:Best option for using the GData APIs on Android?在 Android 上使用 GData API 的最佳选择?
【发布时间】:2010-10-06 04:08:39
【问题描述】:

在 Android 应用程序中使用 Google 数据 API 最不痛苦、最节省空间的方法是什么?

经过几次快速搜索后,似乎在 Google 代码上有一个 android-gdata 项目,似乎是一个作者的作品。我没有找到任何文档,甚至不知道它是否已准备好生产。

一个较旧的选项,com.google.wireless.gdata 包似乎是来自 SDK 的 removed。它仍然是 GIT 存储库中的 available

在我为这两种方法投入太多时间之前,我想知道哪种方法得到最好的支持和最不痛苦。

【问题讨论】:

  • 我也想知道这个问题的答案 - 我很惊讶 Android API 甚至不包含 Gdata API 的子集,为什么不捆绑这些非常有用的组件!跨度>
  • 令人惊奇的是,目前最难开发 gdata 应用的设备是 Android,而你必须跳过的循环

标签: android gdata-api


【解决方案1】:

我用过这个API

我尝试将其转换为 .jar,但遇到了问题。我发现很容易将项目标记为库项目,然后在我的主项目中使用它。

【讨论】:

    【解决方案2】:

    请查看支持 Android 的 Google API Client Library for Java

    它还支持新的 GData 技术,例如最近宣布的部分响应/更新和 JSON-C,这两者都可以显着提高 Android 的效率。

    首先,请查看Android Developer's Guide。另外,请看Android sample for Picasa Web Albums Data API,它演示了创建/更新/删除相册和上传图片的能力。

    完全披露:我是google-api-java-client 项目的所有者。

    【讨论】:

    • 这看起来很棒。感谢您的链接!
    • 如果您使用 Google Docs,您将需要 Javamail 依赖项:oracle.com/technetwork/java/index-138643.html 否则您会在 logcat 中收到 MediaStreamSource 错误
    • 克里斯,不,google-api-java-client库中没有对Javamail的依赖,也没有MediaStreamSource。这只是旧 gdata-java-client 库中的一个问题。
    • @Yaniv 是 1.10 Alpha 有的东西吗?
    • 我很困惑。我想从 Android 环境中获取 Google Spreadhseets 数据。 Yaniv 的 google-api-java-client 链接指向一个页面,该页面又链接到“我们支持的 Google API 列表”,包括电子表格 API,位于 code.google.com/apis/spreadsheets。它的开发人员指南“入门”部分说要下载 gdata-java-client 库以访问 API,所有示例似乎都依赖于 gdata-java-client(例如,com.google.gdata.data.spreadsheet.* )。但是,@Yaniv 在下面说“gdata-java-client 库不支持 Android”。我错过了什么?
    【解决方案3】:

    请尝试Google SpreadSheet API for Android

    我在 Google Code 上维护这个项目,所以如果您遇到任何问题,请告诉我。

    干杯, 普拉桑塔

    【讨论】:

    • 这很好用。您只需要注释掉指向 Prasanta 似乎无意中留在已发布代码中的代理服务器的几行代码,以加快响应时间(例如,一分钟对两秒)。请参阅上面链接中的 Google 代码中的问题 13 以获取修复。
    【解决方案4】:

    以下是让 Google Docs api 与 Android Eclipse 项目一起工作的一些步骤。

    剧透:它(对我而言)在 SAX 异常上中断

    1

    Get the GData Java library(通过the language guide

    2

    Android Javamail port 获取 3 个罐子

    3

    在您的 lib 文件夹中添加以下 jar,使用上下文菜单将它们添加到路径(构建路径->添加)

    • activation.jar (javamail)
    • additionnal.jar (javamail)
    • mail.jar (javamail)
    • gdata-client-1.0.jar
    • gdata-client-meta-1.0.jar
    • gdata-core-1.0.jar
    • gdata-docs-3.0.jar
    • gdata-docs-meta-3.0.jar
    • gdata-gtt-2.0.jar
    • gdata-gtt-meta-2.0.jar
    • gdata-media-1.0.jar
    • google-collect-1.0-rc1.jar(来自 gdata 文件夹的 deps 文件夹)
    • jsr305.jar3。 (来自 gdata 文件夹的 deps 文件夹)

    4

    不要忘记在你的 AndroidManifest.xml 中添加 INTERNET 权限:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    

    5

    尝试一些示例代码:

    DocsService client = new DocsService("myappname");
    try
    {
        client.setUserCredentials("username", "password");
    
        URL feedUri = new URL("https://docs.google.com/feeds/default/private/full/");
        DocumentListFeed feed = client.getFeed(feedUri, DocumentListFeed.class);
    
        TextView textView = (TextView) findViewById(R.id.textview);
    
        String text = ""; 
        for (DocumentListEntry entry : feed.getEntries())
        {
            text += entry.getTitle().getPlainText() + "\r\n";
        }
    
        textView.setText(text);
    }
    catch (AuthenticationException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (MalformedURLException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (IOException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (ServiceException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    

    6

    在 2 小时后接受失败,并带有来自 logcat 的 SaxException:

    警告/XmlParser(1599):javax.xml.parsers.ParserConfigurationException:
    org.xml.sax.SAXNotRecognizedException:http://xml.org/sax/features/external-parameter-entities
    ...
    在 com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:68)

    最后一步会导致 ServiceException。

    【讨论】:

    • 对,gdata-java-client 库不支持 Android。这是一个已知问题。相反,您应该使用 google-api-java-client。对了,下载链接需要更正为code.google.com/p/google-api-java-client/downloads/list
    • @Yaniv 我修复了链接。你不觉得他们自己的设备没有原生支持有点奇怪吗?也许他们对此有很大的计划,并且不想为 GDocs 等获取应用程序。
    • @Chris S 我使用了您的示例,但连接到登录 URI 时出现 AuthenticationException 错误
    • lolz.. 我花了 2 个多小时才到达第 6 步并接受失败。现在从 google-apis 开始 .. 第 1 步。;)
    【解决方案5】:

    我还查看了 google-code 项目和 git repo。由于必需项目中出现的明显包袱,我避开了 google-code 项目。我最终根据需要创建了自定义实现以适应标准 java API。您可以在android-developers group 中找到我的解决方案的粗略描述。它是 4 个简短、易于测试的类

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2011-02-09
      • 2015-11-20
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多