Android

How to delete a file on google drive using Google Drive Android API

Как удалить файл на Google диске с помощью Google Drive Android API

Я новичок в Google Drive Android API, и я его изучаю. Но я столкнулся с проблемой, которая заключается в том, что я не могу удалить файл с помощью Google Drive Android API, примера этого нет. Кто-нибудь может помочь мне с этим вопросом? Большое спасибо.

Переведено автоматически
Ответ 1

ОБНОВЛЕНИЕ (апрель 2015)
У GDAA наконец-то появилась собственная функция "корзины", делающая приведенный ниже ответ НЕАКТУАЛЬНЫМ.

ОРИГИНАЛЬНЫЙ ОТВЕТ:
Как упоминала Шерил выше, вы можете объединить эти два 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();
}

Во-вторых, реализуйте вызовы RESTful API для DriveId GDAA:

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. Это не имеет отношения к рассматриваемой здесь проблеме, я собираюсь поднять вопрос SO по этому поводу.

И, во-вторых, ЭТО ВЗЛОМ! и это не должно оставаться в вашем коде после реализации GDAA функций корзины и УДАЛЕНИЯ.

Ответ 2

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

Вам нужен идентификатор файла для удаления файла и экземпляра сервиса:

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);
}
}
Ответ 3

Удаление файлов пока не поддерживается. Вы всегда можете вернуться к использованию RESTful API для подобных задач.

Ответ 4

Для удаления вы можете использовать следующий код. Затем с помощью 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));
});
}
2023-05-15 19:19 java android