Android Drive API V3 - Как узнать, удален ли файл или удален? - PullRequest
0 голосов
/ 21 мая 2018

Я работаю с Google Drive API V3 , чтобы создать папку с приложением для Android.

После создания идентификатор файла сохраняется в общий преф - для использования и добавления его позже.Файл сохраняется как информация о пользователе, а не как информация о приложении, поэтому пользователь может изменить его с диска.Возможно, что папка удалена или полностью удалена - и если это так, я хочу создать новую папку.

Согласно этому объяснению о поиске файлов Я могу использовать files.list - но этовернет все файлы.и мне нужен только определенный файл (если он существует)

при получении списка - я могу видеть значение мусора (true / false), например:

List<String> fileInfo = new ArrayList<String>();
FileList result = mDriveServiceForTrash.files().list()
         .setPageSize(100)
         .setFields("nextPageToken, files(id, name,trashed)")
         .execute();
List<File> files = result.getFiles();

if (files != null) {
    for (File file : files) {
        fileInfo.add(String.format("%s (%s) trashed =%s\n",
            file.getName(), file.getId(),file.getTrashed()));
    }
}

В моем коде - mDriveFolderId - это строка с идентификатором папки после ее создания - взята из "file.getId()".

Я пытался использовать -

File checkFileTrashed = mDriveService.files()
    .get(mDriveFolderId)
    .setFields("files(trashed)")
    .execute();

Это возвращает исключение:

error = 400 Bad Request {
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "location" : "fields",
    "locationType" : "parameter",
    "message" : "Invalid field selection files",
    "reason" : "invalidParameter"
  } ],
  "message" : "Invalid field selection files"
}
  1. Может кто-нибудь, пожалуйста, направьте меня к решению, чтобы получить значение для конкретного файла?
  2. Какой может быть структура setFields ()?

Спасибо большое !!

1 Ответ

0 голосов
/ 21 мая 2018

Найдена структура для SetFields () - чтобы определить, является ли файл Trashed

File checkFileTrashed = mDriveService.files()
    .get(mDriveFolderId)
    .setFields("trashed")
    .execute();

, вы можете использовать эту ссылку из Google Drive API

Как только файл будет удален - вы получите IOException, с "message" : "File not found: <the fileId > "

вы можете поймать его и обработать логику (создать новую папку, отправить сообщение напользователь и т.д ...)

...