从gdrive删除文件中的Nullpointer

时间:2014-06-25 05:07:34

标签: android google-drive-api delete-file google-drive-android-api

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

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

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

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

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

这里Logcat ERROR:

enter image description here

请为我提供google驱动器删除文件的标准解决方案。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

对于'垃圾',无需再将GDAAREST Api混合使用。自GooPlaySvcs 7.0版(2015年3月)以来,GDAA中有一个'trash()'方法,不需要ResourceId,使您免受timing issues与其延迟/存在相关的影响。

简短演示,这里是GDAA的'垃圾'包装器,不需要ResourceId。最重要的是,您无需担心网络(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 !!!   
        }
      });
    }
  }
}

祝你好运