新版Google云端硬盘Android API(GDAA)创建的文件未显示

时间:2014-03-13 14:42:06

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

首先,一切都看好,直到昨天(2014年3月12日)。从午餐时间开始,GDAA创建的文件(不是文件夹)不再显示在Web Drive界面中。一些人出现了相当长的延迟(3小时以上),此后一无所获。 Android GDAA查找/搜索工具显示文件(包括内容)和文件夹,但Web驱动器只有文件夹。我使用了this code to test it,但我也尝试了the official demo,结果相同。

1 个答案:

答案 0 :(得分:2)

通过使用标准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查找文件夹/文件的能力。此处的查询失败(请参阅“NO md AVAILABLE”)

...
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服务从用户的操作中恢复而不会失去查询现有对象的能力,那就太好了。