使用android.gms.drive从android删除/删除文件

我需要使用com.google.android.gms.drive从Google云端硬盘中删除文件。 从我在这里和网上看到的内容,“新API”中不支持删除文件。 那(还)是正确的吗? 我的意思是API不再那么新了……

我还读到了“明确的内容和忘记” – 策略,但我不想遵循这种方法。

问题的第2部分:鉴于仍然无法通过上述API删除文件; 是否有任何简单的方法将REST API与我已编写的代码结合起来? 就像是

  1. 从GoogleApiClient获取令牌
  2. 使用令牌和文件ID激活DELETE请求
  3. ???
  4. 利润

编辑:新的Google Play服务(版本7.0.0 / 2015年3月)最终具有trash()方法。 有关详细信息,请参阅https://developer.android.com/reference/com/google/android/gms/drive/DriveResource.html 。 。


edit2:显然你不能对app文件夹中的文件使用trash()Cannot trash App Folder or files inside the App Folder. :((


edit3:截至5月28日,现在可以实际删除文件。

使用DriveResource.delete()方法,从Google Play服务7.5开始,Google Drive Android API支持删除。

删除是永久性的,仅建议用于垃圾邮件不可用的应用程序文件夹内容。

更新(2015年5月)
向GDAA 7.5添加垃圾/删除function会使下面的答案无关紧要

原始答案:

顺序是:

  1. 从GDAA获取DriveId(文件或文件夹)
  2. 从DriveId.getResourceId()获取ResourceId(如果尚未提交文件/文件夹,则可以为null)
  3. 在此REST调用中使用ResourceId(rsid):
 com.google.api.services.drive.Drive.files().trash(rsid).execute() com.google.api.services.drive.Drive.files().delete(rsid).execute() 
  1. 终于意识到你不能这样做,因为你会在删除/删除后很长时间内在GDAA中看到该文件。 你甚至可以在其中写入,在你刚刚发生的文件夹中创建文件,……这就是为什么人们推出了“没有人喜欢的”内容和遗忘“策略。

不用说,这适用于您可能在GDAA Universe之外执行的任何删除/废弃操作(使用Web界面等手动删除/删除…)

所以,把它包起来。 ‘pinoyyid’是对的,每个API都不同,GDAA也不能取代REST(尚未)。 当你尝试更深入的工作时,你会很快意识到这一点,例如获取缩略图url,对抗延迟问题等等……另一方面,GDAA具有优势,因为它可以离线工作,而无需你的应用程序处理它。 使用REST时,您的应用应该在某种同步服务中执行所有云端硬盘呼叫,以将您的UI操作与网络问题(延迟,离线,…)分开。 GDAA会为您处理此问题,但依据它自己的时间条款。 并且没有删除function。

我在github上放了一段代码,这两个API并排使用,你可以用它来玩不同的场景,然后再将它们交给其中一个。

很高兴从谷歌清楚地听到最终战略是什么,即

  • 在所有RESTfunction出现之后,GDAA有一天会取代REST吗?
  • 他们之后会退休吗?

祝好运