在Google驱动器V2中,我们可以通过获取ParentReference对象并使用getIsRoot()方法来查询它。如何知道id是否是谷歌驱动器V3中的root id?
在V3中我们没有任何ParentReference类,如果我们试图获得父项,并且因此没有任何方法来知道给定的Id是否为root。
在Google驱动器V2中,我们可以通过获取ParentReference对象并使用getIsRoot()方法来查询它。如何知道id是否是谷歌驱动器V3中的root id?
在V3中我们没有任何ParentReference类,如果我们试图获得父项,并且因此没有任何方法来知道给定的Id是否为root。
a file资源包含一个列表,告诉你父母是什么文件。你不应该很难创建自己的方法,它会告诉你它是否是根。
parents [] list包含文件的父文件夹的ID。 如果未将其指定为创建请求的一部分,则该文件将直接放置在“我的云端硬盘”文件夹中的 。更新请求必须使用 addParents和removeParents参数来修改这些值。
每个文件和文件夹都有一个父,除了 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不会有多个根(例如,针对不同的域)。
也许是最安全的方法是: -
这是不可能的,你将不得不get the root folder和存储其ID与比较。
方法是file.getParents()并返回当前文件对象的ID的列表您正在使用。我已经使用它。但是,我们如何才能知道我们得到的id是否为root,因为getIsRoot()仅用于此目的。现在我所做的是,将一个静态变量的根ID保存为一个静态变量,当我将param作为“root”的孩子时,我感觉这是一个循环而不是一个可行的解决方案。没有像V2这样的直接API来检查当前Id是否为root? –
getIsRoot()是Android SDK中的一种方法,它不是Google Drive API的一部分。它们是有区别的。有人需要将其添加到SDK中,否则开发人员需要创建自己的方法,其功能类似于您从V2中记住的方法。 – DaImTo
根据我的知识,getIsRoot()是ParentReference类的一种方法,它通过文件资源的getParents()方法作为列表返回。并且文件和ParentReference类都只是Google Drive API V2的一部分。 –