在 Android 上使用 GData API 的最佳选择?
Posted
技术标签:
【中文标题】在 Android 上使用 GData API 的最佳选择?【英文标题】:Best option for using the GData APIs on Android? 【发布时间】: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,而你必须跳过的循环 【参考方案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 个简短、易于测试的类
【讨论】:
以上是关于在 Android 上使用 GData API 的最佳选择?的主要内容,如果未能解决你的问题,请参考以下文章
是否有适用于 Python 3.x 的 Google 数据 API (gdata)?
通过 Zend_Gdata 使用来自 android 的 AccountManager.getAuthToken 的结果(401 未授权)
可以从 blogger api 或 gdata api 获得以下博客列表吗?
SyntaxError 使用 gdata-python-client 访问 Google Book Search Data API