Android - 使用Google Drive API进行Android开发

5

我需要我的应用程序与Google Drive同步的列表。我已经实现了登录,并让我的Main_Activity同时实现了以下两个功能:

com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks,
com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener

虽然我已经阅读了整个Google Drive API for Android文档,特别是存储应用程序数据部分,并查看了GitHub上的示例,但我仍无法让它正常工作。我个人认为这份文档真的很难理解。甚至不清楚Google Drive API for android和Google Drive REST API之间有何差异,以及我应在我的情况下使用哪个。
此外,我注意到GitHub上的示例扩展了具有其他方法的自定义Activity。 请问有人可以逐步解释如何使用android驱动程序API吗?

选择要使用的API将取决于您的用例。为了帮助您区分这些API,请参阅此SO帖子。关于将应用程序列表与Google Drive同步,一旦确定要使用的API,您可能需要检查此线程,看看它是否有所帮助。 - Teyam
你能否编辑你的帖子,包括你的MainActivity? - Sammy T
2个回答

3
我了解你的挫败感。有“Google Drive Android API”(GDAA)和“Drive REST API”。网上有一些很好的文档,但找到它并理解它可能是一个挑战,特别是因为包的名称非常相似。此外,“Drive REST API”至少有两个现存版本,您必须保持版本清晰。
关于GDAA,您已经找到了这个文档,但您应该仔细查看一下。我建议您做一个简单的活动,例如创建文件,然后从那里开始工作。
我认为您在GitHub上引用的示例中的自定义Activity是 BaseDemoActivity 。该类只提供一些生命周期方法和其他常见程序。
Google Drive Android API(GDAA)与Play Services紧密集成,谷歌声称具有更好的性能。 (请参见此处的说明):

注意:此快速入门演示了如何在Android应用程序中使用Drive REST API。但是,在大多数情况下,制作Drive应用程序将通过使用与Google Play服务集成并提供更好性能的Drive API for Android而获得强大的收益。在Android应用程序中使用Drive REST API之前,您应该仔细查看Drive API for Android并在可能的情况下在应用程序中使用它。如果您想了解更多信息,请参阅Drive API for Android快速入门。

尽管如此,由于同步频率限制的加强,我已经放弃了GDAA在大多数情况下。(有关更多详细信息,请参见本帖子底部的注释。)
当使用GDAA时,需要牢记的一个关键事项是,即使您的代码可以在UI线程上运行,但由于可能执行的任务长度较长,GDAA不能在UI线程上运行。这意味着一旦您从UI线程请求GDAA执行某个任务,GDAA将在后台(而不是在UI线程上)执行该工作,并通过回调向您提供结果。
尽管这种结构是必要的,但这意味着您的代码将是由GDAA调用的一系列方法,并且不一定会展示出您可能习惯的清晰的顺序格式。我把它看作是软件中的Pachinko机。
虽然不是一组逐步说明,但我希望这可以让您朝正确的方向前进。

关于同步频率: 具体来说,上传到服务器的内容将按照 DrivePreferencesApi 中指定的方式进行。上传通常会很快完成。然而,下载受到速率限制。请参阅此文档

为避免设备和服务器过度负载,同步请求会受到速率限制。在这种情况下,操作将失败并显示DRIVE_RATE_LIMIT_EXCEEDED状态,这表示同步已经发生得相当频繁,因此不需要再次同步。在足够的退避持续时间后重新尝试操作即可成功。

我认为“退避持续时间”取决于安装的Play Services版本。根据我的经验,这段时间从几分钟到半个小时甚至更长。这可能已经改变了,我试图找到相关文档,但没有成功。

如果GDAA的下载限制无法满足您的需求,则可以考虑使用Drive REST。您也可以考虑Firebase作为可能的解决方案。


谢谢你的回答,这帮了我很大的忙。你所说的同步频率限制是什么?这对我来说可能非常关键。 - Daniele
我有一个疑问,是否可以使用Android本地API通过DriveID从另一个帐户访问文件?因为我已经成功地使用相同的帐户完成了文件的上传和下载,但是在使用其他帐户时,我遇到了授权异常。是否可能使用REST API实现这一点? - M.Yogeshwaran
Android Drive API仅适用于https://www.googleapis.com/auth/drive.file范围。这意味着只有用户使用您的应用程序打开或创建的文件才能与查询匹配。 - DKV

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接