首先,直到昨天(2014年3月12日),一切看起来都还不错。由于大约是午餐时间,因此GDAA创建的文件(不是文件夹)不再显示在Web Drive界面中。一些人出现了相当多的延迟(3个多小时),此后没有任何反应。 Android GDAA查找/搜索工具同时显示文件(包括内容)和文件夹,但Web驱动器仅包含文件夹。我使用this code to test it,但我也尝试过the official demo,结果相同。
最佳答案
通过使用标准Android设备清空Google Play服务缓存来解决
Settings -> Apps -> Google Play Services -> Clear Cache
可能是由于开发环境滥用服务而导致的故障。如果再次出现,将进行进一步调查。
... 继续
当我深入研究时,我发现了一个看起来很像问题的怪癖,但却可能给应用程序开发人员带来一个大问题。
1 /假设用户可以转到设备的
Settings -> Apps -> Google Play Services -> Manage Space -> Clear All Data
任何时候她/他决定。使用GDAA的应用程序不知道此操作,设备所有者也不知道Google Play服务与基于Google云端硬盘的应用程序有关。
2 /一旦发生这种情况,GDAA应用程序便失去了按TITLE查找文件夹/文件的功能。查询在这里失败(请参阅“无可用md”)
...
if (rslt.getStatus().isSuccess()) {
MetadataBuffer mdb = null;
try {
mdb = rslt.getMetadataBuffer();
if (mdb == null) return null;
dMDs = new ArrayList<DrvMD>();
for (Metadata md : mdb) {
if ((md == null) || (!md.isDataValid()) || (md.isTrashed())) continue;
// NO md AVAILABLE !!!
}
} finally { if (mdb != null) mdb.close(); }
}
即使看起来像是一个小怪癖,但用户可以自由地执行此操作的事实也会导致应用程序出现重大问题。
原因如下:如果存在同名文件夹,则在Google云端硬盘中创建文件夹/文件不会失败。它将创建一个具有相同名称的新模型(我理解该模型)。但是,如果没有可靠的方法来按名称查询是否存在(由上述用户操作引起),则该应用程序将在以下逻辑中失败:
if (FOLDER/FILE by name exists)
return FOLDER/FILE ID
else
ID = create a new FOLDER/FILE
到目前为止,这是创建/访问文件夹/文件时唯一能想到的逻辑。我知道还有2个唯一的ID(资源ID和DriveId)可用,但是在这种情况下它们没有用。任何想法如何解决这个问题?如果Google Play服务能够从用户的操作中恢复过来而又不会失去查询现有对象的能力,那将是很好的选择。