Поиск способа загрузки материалов курса на мобильный телефон Android

#java #android #google-classroom

#java #Android #google-класс

Вопрос:

Есть ли какой-либо способ загрузить файл с Google Диска в пользовательское местоположение? Я использую этот код для получения файла,

 courses.get(0).getCourseMaterialSets().get(0).getMaterials().get(0).getDriveFile()
 

Эта функция возвращает выходные данные типа файла. Как сохранить его локально?

Или есть какой-нибудь способ загрузить файлы с Google Диска с помощью classroom API?

Ответ №1:

Я не думаю, что есть способ сделать это с помощью Classroom API. Чтобы загрузить файлы с Google Диска, ознакомьтесь с руководством по загрузке файлов с помощью Android API для Drive.

Загрузка файла

Предпочтительный метод: использование alt=media

Чтобы загрузить файлы, вы отправляете авторизованный HTTP-запрос GET на URL-адрес ресурса файла и включаете параметр запроса alt=media. Например:

 GET https://www.googleapis.com/drive/v2/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media
 

Авторизация: предъявитель
ya29.AHESVbXTUv5mHMo3RYfmS1YJonjzzdTOFZwvyOAUVhrs Для загрузки файла
пользователю требуется, по крайней мере, доступ для чтения. Кроме того, ваше приложение
должно быть авторизовано с областью, позволяющей считывать содержимое файла.
Например, приложению, использующему область drive.readonly.metadata, не
будет разрешено загружать содержимое файла. Пользователи с
правами на редактирование могут ограничить загрузку пользователями, доступными только для чтения
, установив для метки restricted значение true.

Вот фрагмент из руководства:

 /**
   * Download a file's content.
   *
   * @param service Drive API service instance.
   * @param file Drive File instance.
   * @return InputStream containing the file's content if successful,
   *         {@code null} otherwise.
   */
  private static InputStream downloadFile(Drive service, File file) {
    if (file.getDownloadUrl() != null amp;amp; file.getDownloadUrl().length() > 0) {
      try {
        // uses alt=media query parameter to request content
        return service.files().get(file.getId()).executeMediaAsInputStream();
      } catch (IOException e) {
        // An error occurred.
        e.printStackTrace();
        return null;
      }
    } else {
      // The file doesn't have any content stored on Drive.
      return null;
    }
  }