Google 驱动器 Android Api 文件夹创建完成事件
Google Drive Android Api Completion Event for Folder Creation
completion events in Google Drive Android Api (GDAA) seem to be invoked only by contents change (file create, file contents update). Since I need to retrieve a Resource Id of a folder (seen here for a file with contents),指的是这种方法:
DriveFolder.createFolder(mGAC, meta).setResultCallback(...);
我需要一个文件夹创建的完成事件,但找不到解决方案。
有什么提示吗?谢谢。
不,这个问题的接受者,所以我认为没有直接的解决方案。与此同时,我猛烈抨击了一个 hack,直到这个问题得到解决(如果有的话)。
1/ 创建一个文件夹,您将获得 'preliminary' DriveId,它不产生 ResourceId(未提交任何内容)。
2/ 使用此 DriveId 作为虚拟文件的 parent,其中包含虚拟内容和附加的完成事件请求。文件夹创建现在 apparently 由它的 child.
强制执行
3/ 在完成事件 (as seen here) 中,获取虚拟文件的 DriveId 并检索它的 parent 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' 是 off-UI)
现在你得到文件夹的 'real' DriveId 可以产生一个有效的 ResourceId:
String resourceId = driveId.getResourceId()
4/ 删除已完成其生命周期任务的虚拟文件
有更好的解决办法吗?请告诉我。
completion events in Google Drive Android Api (GDAA) seem to be invoked only by contents change (file create, file contents update). Since I need to retrieve a Resource Id of a folder (seen here for a file with contents),指的是这种方法:
DriveFolder.createFolder(mGAC, meta).setResultCallback(...);
我需要一个文件夹创建的完成事件,但找不到解决方案。
有什么提示吗?谢谢。
不,这个问题的接受者,所以我认为没有直接的解决方案。与此同时,我猛烈抨击了一个 hack,直到这个问题得到解决(如果有的话)。
1/ 创建一个文件夹,您将获得 'preliminary' DriveId,它不产生 ResourceId(未提交任何内容)。
2/ 使用此 DriveId 作为虚拟文件的 parent,其中包含虚拟内容和附加的完成事件请求。文件夹创建现在 apparently 由它的 child.
强制执行3/ 在完成事件 (as seen here) 中,获取虚拟文件的 DriveId 并检索它的 parent 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' 是 off-UI)
现在你得到文件夹的 'real' DriveId 可以产生一个有效的 ResourceId:
String resourceId = driveId.getResourceId()
4/ 删除已完成其生命周期任务的虚拟文件
有更好的解决办法吗?请告诉我。