ответ

5

UPDATE (апрель 2015)
GDAA, наконец, имеет свой собственный «trash» функциональность визуализации ответ ниже неуместны.

ОРИГИНАЛЬНЫЙ ОТВЕТ:
Как уже упоминалось выше, Шерил, вы можете объединить эти два API.

Следующий фрагмент кода, взятый из here, показывает, как это можно сделать:

Во-первых, получить доступ к обоим 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) {} 
} 

... и voila, вы удаляете свои файлы. И, как обычно, не без проблем.

Во-первых, если вы пытаетесь удалить файл сразу после того, как вы создали его, getResourceId() падает на его лицо, возвращая нулевой. Не связанный с этим вопросом, я собираюсь поднять SO-nag на нем.

И, во-вторых, ЭТО ХОК!, и он не должен оставаться в вашем коде после реализации GDAA функций TRASH и DELETE.

+0

Я должен добавить, есть еще одна проблема с этим взломом. После удаления/удаления файла/папки таким образом он будет отображаться как VALID/ALIVE, если вы обратитесь к нему через GDAA (запрос, используя его идентификатор ресурса, ...), поскольку он кэшируется службами Google Play. В результате ваше приложение может писать в файл/создание объектов в папке, которая больше не существует. А задержка «обновления» может быть значительно длинной (часы). – seanpj

+0

Это все еще работает? Где GoogleAccountCredential? и AndroidHttp? Спасибо – Nabin

+1

Это так, но будьте осторожны с задержкой. Мне удалось удалить файлы/папки в RESTful, и после этого GDAA не выдал мне никаких предупреждений, поэтому я мог писать в файлы с неработающими/несуществующими файлами или даже создавать новые файлы в удаленной папке. Существует 2 уровня удаления в RESUST (или на диске), TRASH и DELETE. В GDAA точно не сообщается. Вы можете подключить код здесь к этой демонстрации на Github (https://github.com/seanpjanson/GDAADemo) и поиграть с ним, чтобы увидеть подводные камни. Учетные данные/авторизационная информация хорошо ((MainActivity). См. SO 28439129. – seanpj

0

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); 
    } 
    } 
+0

Этот пример совместим с этим примером? https://github.com/googledrive/android-demos/blob/master/src/com/google/android/gms/drive/sample/demo/CreateFileActivity.java – tonylin

+1

Хотя эта ссылка может ответить на вопрос, это лучше чтобы включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – MackieeE

+0

Он должен, потому что вам просто нужен идентификатор файла, чтобы удалить его, и вы получите идентификатор в своем примере. –

1

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

0

Удалить поддерживается API Google Диска Android с сервисов Google Play 7.5 с использованием метода DriveResource.delete().

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

Смежные вопросы