Удалить / удалить файл из Android с помощью android.gms.drive

Мне нужно удалить файлы с Google Диска, используя com.google.android.gms.drive, Из того, что я читал здесь и в Интернете, нет никакой поддержки удаления файлов в "новом API". Это (все еще) правильно? Я имею в виду, что API больше не нов...

Я также читал о стратегии "очистить содержание и забыть", но я бы не хотел следовать этому подходу.

Часть 2 вопроса: учитывая, что все еще невозможно удалить файлы через API, упомянутый выше; Есть ли простой способ объединить REST API с кодом, который я уже написал? Что-то вроде

  1. получить токен от GoogleApiClient
  2. запустить запрос на УДАЛЕНИЕ с токеном и идентификатором файла
  3. ???
  4. прибыль

изменить: новые сервисы Google Play (версия 7.0.0 / март 2015) наконец-то trash() метод. См. https://developer.android.com/reference/com/google/android/gms/drive/DriveResource.html для получения дополнительной информации.,


edit2: видимо, вы не можете использовать trash() для файлов из папки приложения: Cannot trash App Folder or files inside the App Folder.: ((


edit3: с 28 мая теперь возможно фактически удалить файлы.

2 ответа

Решение

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

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

ОБНОВЛЕНИЕ (май 2015)
Добавление функциональности корзины / удаления в GDAA 7.5 делает ответ ниже неактуальным.

ОРИГИНАЛЬНЫЙ ОТВЕТ:

Последовательность:

  1. Получить DriveId из GDAA (файл или папка)
  2. Получить ResourceId из DriveId.getResourceId() (может быть нулевым, если файл / папка еще не зафиксирован)
  3. используйте ResourceId (rsid) в этом вызове REST:
com.google.api.services.drive.Drive.files().trash(rsid).execute()
com.google.api.services.drive.Drive.files().delete(rsid).execute()
  1. наконец, осознайте, что вы не можете сделать это, так как вы увидите файл в GDAA еще долго после того, как он был удален / удален Вы даже можете писать в нем, создавать файлы в той папке, которую вы только что удалили,... Вот почему люди вводят стратегию "очистить содержимое и забыть", которая никому не нравится.

Нет необходимости говорить, что это относится к любому действию удаления / удаления мусора, которое вы можете выполнять вне юниверса GDAA (удаление / удаление вручную с помощью веб-интерфейса и т. Д.)

Итак, заверните это. 'pinoyyid' прав, каждый из API отличается, и GDAA не может заменить REST (пока). Вы быстро поймете это, когда попытаетесь работать немного глубже, например, получить URL-адрес миниатюр, бороться с задержками и т. Д. С другой стороны, у GDAA есть преимущества, поскольку он может работать в автономном режиме без обработки приложением. При использовании REST ваше приложение должно выполнять все вызовы Drive в какой-либо службе синхронизации, чтобы отделить ваши действия пользовательского интерфейса от сетевых проблем (задержки, отключение, ...). GDAA обрабатывает это для вас, но на собственных временных условиях. И без функциональности удаления.

Я поместил фрагмент кода на github, в котором оба этих API используются бок о бок, и вы можете использовать его, чтобы поиграть с разными сценариями, прежде чем связать себя с одним из них.

Было бы неплохо четко услышать от Google, какова окончательная стратегия, т.е.

  • Собирается ли GDAA заменить REST в один прекрасный день после того, как все функции REST включены?
  • Будут ли они уйти в отставку после этого?

Удачи

Другие вопросы по тегам