一尘不染

如何使用Google Drive Android API删除Google Drive上的文件

java

我是Google Drive Android API的新手,正在学习中。但是我遇到一个问题,就是我无法使用Google Drive Android
API删除文件,没有一个示例。anybood可以帮助我解决这个问题吗?非常感谢。


阅读 319

收藏
2020-09-08

共1个答案

一尘不染

更新(2015年4月),
GDAA终于有了自己的“ 垃圾桶
”功能,使答案在IRRELEVANT下面。

原始答案:
如上文Cheryl所述,您可以将这两个API结合使用。

以下是从此处获取的代码段,展示了如何完成此操作:

首先,访问 GoogleApiClient … services.drive.Drive

GoogleApiClient _gac;
com.google.api.services.drive.Drive _drvSvc;

public void init(MainActivity ctx, String email){
  // build GDAA  GoogleApiClient
  _gac = new GoogleApiClient.Builder(ctx).addApi(com.google.android.gms.drive.Drive.API)
        .addScope(com.google.android.gms.drive.Drive.SCOPE_FILE).setAccountName(email)
        .addConnectionCallbacks(ctx).addOnConnectionFailedListener(ctx).build();

  // build RESTFul (DriveSDKv2) service to fall back to for DELETE
  com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential crd =
  GoogleAccountCredential
    .usingOAuth2(ctx, Arrays.asList(com.google.api.services.drive.DriveScopes.DRIVE_FILE));
  crd.setSelectedAccountName(email);
  _drvSvc = new com.google.api.services.drive.Drive.Builder(
          AndroidHttp.newCompatibleTransport(), new GsonFactory(), crd).build();
}

其次,在GDAA的DriveId上实现RESTful API调用:

public void trash(DriveId dId) {
  try {
    String fileID =  dId.getResourceId();
      if (fileID != null)
        _drvSvc.files().trash(fileID).execute();
  } catch (Exception e) {} 
}

public void delete(DriveId dId) {
  try {
    String fileID = dId.getResourceId();
      if (fileID != null)
        _drvSvc.files().delete(fileID).execute();
  } catch (Exception e) {} 
}

…然后瞧,您正在删除文件。和往常一样,并非没有问题。

首先,如果您尝试在创建文件后立即将其删除,则 getResourceId() 会落在文件的表面,并返回 null
。与这里的问题无关,我要对此提出一个建议。

其次, 这是一个骗局! 而且它不应保留在GDAA实现的TRASH和DELETE功能之后的代码中。

2020-09-08