如何知道在谷歌驱动器V3中id是否为root id?

时间:2017-02-15 07:25:43

标签: java android google-drive-api

在Google Drive V2中,我们通过获取ParentReference对象并使用getIsRoot()方法查询来了解它。

在V3中,如果我们尝试获取Parent,我们没有任何ParentReference类,因此没有任何方法可以知道给定Id是否为root。

3 个答案:

答案 0 :(得分:0)

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

  

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

答案 1 :(得分:0)

每个文件和文件夹都有一个父除了 root(又名'我的云端硬盘'英文)。因此,如果您的文件元数据告诉您它是一个文件夹,并且它没有父项,那么暗示它是root。 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. 创建一个没有父项的空文件/文件夹。根据定义,这将在root中创建。
  2. 在作为文件资源的json响应中,检查父集合以查看父节点的ID,即。 root的ID。
  3. 将其存储在Android偏好设置(Cookie,服务器数据存储区等,具体取决于您的应用运行位置)或AppData中。

答案 2 :(得分:0)

这是不可能的,您必须get the root folder并存储其ID以与。

进行比较