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

时间:2015-03-13 14:22:57

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

我需要使用com.google.android.gms.drive从Google云端硬盘中删除文件。根据我所阅读的here以及网络上的内容,我们不支持在新的API"中删除文件。 这是(仍然)正确吗?我的意思是API不再是新的...

我还阅读了关于"清晰内容并忘记" -strategy,但我不想遵循这种方法。

问题的第2部分:鉴于它仍无法通过上述API删除文件;是否有 easy 方法将REST API w /已编写的代码组合在一起?像

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

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


    edit2 :显然您无法对应用文件夹中的文件使用trash()Cannot trash App Folder or files inside the App Folder. :((


    edit3:截至5月28日,现在可以实现delete个文件。

2 个答案:

答案 0 :(得分:3)

更新(2015年5月)
向GDAA 7.5添加垃圾/删除功能会使答案无关

原始答案:

序列是:

  1. 从GDAA(文件或文件夹)获取DriveId
  2. 从DriveId.getResourceId()获取ResourceId(如果尚未提交文件/文件夹,则可能为null)
  3. 在此REST调用中使用ResourceId(rsid):
  4. com.google.api.services.drive.Drive.files().trash(rsid).execute()
    com.google.api.services.drive.Drive.files().delete(rsid).execute()
    
    1. 终于意识到你不能这样做,因为你会在删除/删除后很长时间内在GDAA中看到该文件。你甚至可以在其中写入,在你刚刚破坏的文件夹中创建文件,......这就是为什么人们推出了“没有人喜欢的”内容和遗忘“策略。
    2. 毋庸置疑,这适用于您可能在GDAA Universe之外执行的任何删除/废弃操作(使用网络界面等手动删除/删除...)

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

      我在github上放了一段代码,它有both these API's used side-by-side,你可以用它来玩不同的场景,然后自己去做其中一个。

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

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

      祝你好运

答案 1 :(得分:0)

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

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