2017-02-15 18 views

回答

0

a file资源包含一个列表,告诉你父母是什么文件。你不应该很难创建自己的方法,它会告诉你它是否是根。

parents [] list包含文件的父文件夹的ID。 如果未将其指定为创建请求的一部分,则该文件将直接放置在“我的云端硬盘”文件夹中的 。更新请求必须使用 addParents和removeParents参数来修改这些值。

+0

方法是file.getParents()并返回当前文件对象的ID的列表您正在使用。我已经使用它。但是,我们如何才能知道我们得到的id是否为root,因为getIsRoot()仅用于此目的。现在我所做的是,将一个静态变量的根ID保存为一个静态变量,当我将param作为“root”的孩子时,我感觉这是一个循环而不是一个可行的解决方案。没有像V2这样的直接API来检查当前Id是否为root? –

+0

getIsRoot()是Android SDK中的一种方法,它不是Google Drive API的一部分。它们是有区别的。有人需要将其添加到SDK中,否则开发人员需要创建自己的方法,其功能类似于您从V2中记住的方法。 – DaImTo

+0

根据我的知识,getIsRoot()是ParentReference类的一种方法,它通过文件资源的getParents()方法作为列表返回。并且文件和ParentReference类都只是Google Drive API V2的一部分。 –

0

每个文件和文件夹都有一个父,除了 root(又名'My Drive'in English)。所以如果你的文件元数据告诉你它是一个文件夹,并且没有父母,那么暗示它是根。 NB请参阅danielx的评论。在某些罕见情况下,文件夹可能会成为孤儿,因此需要整合其他测试。

在伪代码 boolean isRoot(File file) { return (file.parents.size == 0 && file.mimeType == "application/vnd.google-apps.folder") } 我看着旧版本库的源代码,看看实际执行的getIsRoot()方法。它暴露了ParentsReference资源的isRoot属性。因此,您仍然可以通过使用v2 REST呼叫访问此媒体资源,具体来说就是https://developers.google.com/drive/v2/reference/parents#resource

话虽如此,但不保证将来Drive不会有多个根(例如,针对不同的域)。

也许是最安全的方法是: -

  1. 没有父母创建一个空文件/文件夹。根据定义,这将在根中创建。
  2. 在作为文件资源的json响应中,请检查父级集合以查看父级的标识,即。根的ID。
  3. 将其存储在Android首选项(Cookie,服务器数据存储等等,取决于您的应用程序运行的位置)或AppData中。
+0

这是不正确的,文件和文件夹可能是孤儿https://support.google.com/a/answer/6008339?hl=zh-CN – danielx

+0

好点。这是一个边缘情况,但仍然有可能。 – pinoyyid

相关问题