Google云端硬盘访问存在的文件和文件夹

时间:2015-04-10 05:29:41

标签: android google-drive-api google-drive-android-api

我想创建一个Android活动,显示用户的GoogleDrive帐户的文件结构。简单来说,当用户点击按钮(例如 Google云端硬盘中的文件)时,应该将用户定向到GoogleDrive主页,即显示文件和文件夹的页面。用户可以访问文件,创建新文件,删除现有文件等。我正在使用存在的代码here来完成此项目。我需要帮助创建此活动。

1 个答案:

答案 0 :(得分:0)

您不能使用GDAA(您提及的演示),因为它只支持FILE范围。这意味着它只会看到Android App创建的文件/文件夹。对于您的情况,请使用带驱动范围的REST api。

使用REST api,找到id为“root”的文件夹,然后迭代(递归)向下收集文件的文件夹树层次结构。您可以查看此demo,特别是方法“testTree

您不能直接使用它,因为它不使用递归来迭代层次结构(我的树结构是预先定义的,您将是未知的)。

所以你必须:

  • 通过设置“USE_REST = true
  • 来使用REST风格
  • 重写'testTree'方法以使用递归。 (提示:使用MIME类型“application / vnd.google-apps.folder”来识别文件夹而不是文件)
  • 确保使用'DRIVE'范围,而不是'DRIVE_FILE'here

另一种(更高性能)APPROACH:

由于Google Drive不是设计层次结构(它只是假装),因此还有另一种可能解决此问题的方法(您可以在playground here - 页面底部进行测试。)< / p>

一次性列出云端硬盘中的所有文件(仅过滤您需要的字段),并从匹配的文件/文件夹“id”和“parentIds”中删除树结构。以下是REST操场列表的典型结果:

GET https://www.googleapis.com/drive/v2/files?fields=items(id%2Cparents%2Fid)&key={YOUR_API_KEY}

200 OK

{
 "items": [
  {
   "id": "10JyzCXw7GcmEQPcxGHtlP4yAQ6tPXtK8nmrlVCThjL8",
   "parents": [
    {
     "id": "0B1mQUW2aFJfdbHlVQWdwOVhWMG8"
    }
   ]
  },
  {
   "id": "0B1mQUW2aFJfdYWZTcmRMVWlReGc",
   "parents": [
    {
     "id": "0B1mQUW2aFJfdVlJYYVJxU3R1dFU"
    }
   ]
  },

这样,您只需要一个REST'文件()。list()'call和'String.equals()'来解决您的问题。假设,文件夹也有已知的MIME类型,逻辑应该很容易。

祝你好运