用于创建文件夹的Google Drive Android Api完成事件

时间:2015-12-16 17:20:58

标签: google-drive-android-api

Google Drive Android Api中的completion eventsGDAA)似乎只能通过更改内容(文件创建,文件内容更新)来调用。由于我需要检索文件夹(seen here for a file with contents)的资源ID,请参阅此方法:

   DriveFolder.createFolder(mGAC, meta).setResultCallback(...);

我需要一个文件夹创建的完成事件,但我找不到解决方案。

任何提示?谢谢。

1 个答案:

答案 0 :(得分:3)

不,这个问题的接受者,所以我认为没有直接的解决方案。与此同时,我抨击了一个黑客攻击,直到它被修复(如果有的话)。

1 /创建一个文件夹,你得到了初步的' DriveId YIELDS NO ResourceId(没有提交任何内容)。

2 /使用此DriveId作为虚拟文件的父级,其中附加了虚拟内容和完成事件请求。文件夹创建现在显然是由它的孩子强制的。

3 /在完成事件(as seen here)中,获取虚拟文件的DriveId并检索它的父ID:

  com.google.android.gms.common.api.GoogleApiClient GAC;   
  //...   
  DriveId parentID(DriveId dId) {
    MetadataBuffer mdb = null;
    DriveApi.MetadataBufferResult mbRslt = dId.asDriveResource().listParents(GAC).await();
    if (mbRslt.getStatus().isSuccess()) try {
      mdb = mbRslt.getMetadataBuffer();
      if (mdb.getCount() > 0)
        return mdb.get(0).getDriveId();
    } catch (Exception e) { e.printStackTrace();}
    finally {
      if (mdb != null) mdb.close();
    }
    return null;   
  }

(' await()'风味在这里工作,因为' DriveEventService'是关闭UI的)

现在你得到文件夹'真实' DriveId可以生成有效的ResourceId:

  

String resourceId = driveId.getResourceId()

4 /删除已经为其提供服务的虚拟文件

有更好的解决方案吗?请告诉我。