Files created by the NEW Google Drive Android API (GDAA) not showing up

孤者浪人 提交于 2019-11-29 16:59:41

Fixed by emptying the Google Play Services cache using standard Android device

Settings -> Apps -> Google Play Services -> Clear Cache

probably a snag caused by a development environment abuse of the services. Will investigate further if it reappears.

... continued

As I was digging deeper, I have discovered a quirk that looks like a non-issue, but can create a big problem for app developers.

1/ lets assume that user can go to device's

Settings -> Apps -> Google Play Services -> Manage Space -> Clear All Data

anytime she/he decides to. The app that uses GDAA has no knowledge of this action, and the device owner has no idea that Google Play Services has anything to do with Google Drive based app.

2/ The moment this happens the GDAA app loses it's ability to find folders / files by TITLE. Queries fail here (see "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(); } 
}

Even though it looks like a minor quirk, the fact that user can do this freely, causes MAJOR problem to the apps.

Here's why: Creating a folder/file in Google Drive will NOT fail if one with the same name exists. It will create a new one with the same name (and I understand the model). But if there is no reliable way to query for existence by name (caused by the user's action above), the app fails in this logic:

   if (FOLDER/FILE by name exists)
    return FOLDER/FILE ID
   else
     ID = create a new FOLDER/FILE

And so far this is the only logic I can come up when creating/accessing folder/file. I know there are 2 more unique IDs available (resource ID and DriveId), but they are not useful in this situation. Any ideas how to get around this? It would be nice if Google Play Services recovered from user's action without losing it's ability to query existing objects.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!