自从新的 Google Drive Android Api (GDAA) 推出以来,这个问题就一直困扰着我。
第一的在这里讨论 http://github.com/googledrive/android-demos/issues/3,我希望它会在以后的版本中消失,但它仍然存在(截至 2014/03/19)。用户删除的文件/文件夹(指“drive.google.com”中的“删除”操作)继续出现在
Drive.DriveApi.query(_gac, query), and
DriveFolder.queryChildren(_gac, query)
也
DriveFolder.listChildren(_gac)
方法,即使与
Filters.eq(SearchableField.TRASHED, false)
查询限定符,或者如果我对结果使用过滤构造
for (Metadata md : result.getMetadataBuffer()) {
if ((md == null) || (!md.isDataValid()) || md.isTrashed()) continue;
dMDs.add(new DrvMD(md));
}
Using
Drive.DriveApi.requestSync(_gac);
没有影响。自移除以来所经过的时间差别很大,我的最后一个案例已经超过 12 小时了。而且它是完全随机的。
更糟糕的是,我什至不能依赖“drive.google.com”中的 EMPTY TRASH,它不会产生任何可预测的结果。有时文件状态会更改为“isTrashed()”,有时会从结果列表中消失。
当我不断摆弄这个问题时,我最终得到了以下超级可怕的黑客:
find file with TRASH status equal FALSE
if (file found and is not trashed) {
try to write content
if ( write content fails)
create a new file
}
即使这样也没有帮助。即使文件位于垃圾箱中,该文件也显示为正常(并且其状态通过查询和元数据测试进行了双重过滤)。它甚至可以愉快地写入,当在垃圾箱中检查时,它会被修改。
这里的结论是修复应该获得更高的优先级,因为它会使 Drive 的多平台使用变得不可靠。它会在开发/调试过程中立即被开发人员发现,并引导他们离开。