Google Drive Android Api中的completion events(GDAA)似乎只能通过更改内容(文件创建,文件内容更新)来调用。由于我需要检索文件夹(seen here for a file with contents)的资源ID,请参阅此方法:
DriveFolder.createFolder(mGAC, meta).setResultCallback(...);
我需要一个文件夹创建的完成事件,但我找不到解决方案。
任何提示?谢谢。
答案 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 /删除已经为其提供服务的虚拟文件
有更好的解决方案吗?请告诉我。