自从新的 Google Drive Android Api (GDAA) 推出以来,这个问题一直困扰着我。首先在这里讨论,我希望它会在以后的版本中消失,但它仍然存在(截至 2014 年 3 月 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));
}
使用
Drive.DriveApi.requestSync(_gac);
没有影响。自从删除以来经过的时间变化很大,我的最后一个案例是超过 12 小时。它是完全随机的。
更糟糕的是,我什至不能依赖“drive.google.com”中的 EMPTY TRASH,它不会产生任何可预测的结果。有时文件状态更改为“isTrashed()”,有时它会从结果列表中消失。
当我一直在摆弄这个问题时,我最终得到了以下 superawfulhack:
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 的多平台使用变得不可靠。开发人员会在开发/调试过程中立即发现它,引导他们离开。