3

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

4

5 回答 5

5

更新(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 功能。

于 2014-03-13T04:04:41.243 回答
1

尚不支持文件删除。你总是可以回退到使用 RESTful API 来处理这样的事情。

于 2014-03-10T15:50:50.740 回答
1

https://developers.google.com/drive/v2/reference/files/delete

您需要 file-id 来删除文件和服务实例:

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

... 

private static void deleteFile(Drive service, String fileId) {
    try {
      service.files().delete(fileId).execute();
    } catch (IOException e) {
      System.out.println("An error occurred: " + e);
    }
  }
于 2014-03-10T09:08:50.027 回答
1

要删除,您可以使用以下代码。然后使用 createFile 在驱动器上复制一个新文件。

    private void deleteFile(DriveFile file) {
        // [START drive_android_delete_file]
        getDriveResourceClient()
            .delete(file)
            .addOnSuccessListener(this, aVoid -> {
                Log.e(TAG, "File Deleted");
            })
            .addOnFailureListener(this, e -> {
                Log.e(TAG, "Unable to delete file", e);
                showMessage(getString(R.string.delete_failed));
            });
    }
于 2018-11-22T08:16:36.337 回答
0

从 Google Play 服务 7.5 开始,Google Drive Android API 使用DriveResource.delete()方法支持删除。

我们建议对用户可见的文件使用回收站而不是删除,以便让用户有机会恢复任何意外丢弃的内容。删除是永久性的,建议仅用于应用文件夹内容,其中垃圾不可用。

于 2015-05-29T06:40:17.123 回答