0

当我尝试从 Driveid 获取资源 id 时出现第一个错误。

DriveFile dfile= Drive.DriveApi.getFile(mGoogleApiClient,DriveId.decodeFromString(driveId));                                            
Log.e(TAG,"Driveid>>>>" + driveId);                                             
String resourceID= dfile.getDriveId().getResourceId().toString();

每当我获得资源 ID 并尝试从谷歌驱动器中删除项目时。

com.google.api.services.drive.Drive service;

service.files().delete(resourceID).execute();

这里 Logcat 错误:

在此处输入图像描述

请给我从谷歌驱动器中删除文件的标准解决方案。

4

2 回答 2

2

对于新创建的文件,不会立即填充 resourceId。一旦文件提交到服务器,它将被填充。您应该在使用它之前检查它是否为空。

于 2014-06-25T16:01:13.417 回答
0

对于'trash',不再需要将GDAAREST Api 混合使用。自 GooPlaySvcs 7.0 版(2015 年 3 月)以来,GDAA 中有一个不需要 ResourceId的“trash()”方法,可以避免与延迟/存在相关的时序问题。

对于简短的演示,这里是一个不需要 ResourceId 的 GDAA 的“垃圾”包装器。最重要的是,您无需担心网络(wifi)在线/离线状态。

private static GoogleApiClient mGAC;
...  
static void trash(DriveId dId) {
  if (mGAC != null && mGAC.isConnected() && dId != null) {
    DriveResource driveResource;
    if (dId.getResourceType() == DriveId.RESOURCE_TYPE_FOLDER) {
      driveResource = Drive.DriveApi.getFolder(mGAC, dId);
    } else {
      driveResource = Drive.DriveApi.getFile(mGAC, dId);
    }
    if (driveResource != null) {
      driveResource.trash(mGAC).setResultCallback(new ResultCallback<Status>() {
        @Override
        public void onResult(Status status) {
          // bingo, trashed successfully !!!   
        }
      });
    }
  }
}

祝你好运

于 2015-08-29T14:08:16.733 回答