使用Drive sdk从Drive文件夹访问完整文件列表

时间:2016-05-11 10:24:26

标签: android google-drive-api google-drive-android-api

我想访问Google云端硬盘文件夹的完整文件列表(此列表中应包含非由我创建的文件)

我面临的问题:使用Drive SDK,似乎只允许两种类型的范围 - FILE_SCOPE和APP_FOLDER_SCOPE。它们只能获取应用程序创建的文件。

在更改为更开放的范围 - https://www.googleapis.com/auth/drive.readonly时,我在尝试连接GoogleApiClient时获得statusCode = INTERNAL_ERROR,resolution = null。

是否可以通过Drive SDK以编程方式对Google云端硬盘进行完全(只读)访问?

欢迎任何有关进一步研发的建议或指示。

3 个答案:

答案 0 :(得分:1)

使用REST API,你应该使用类似的东西:

List<String> fileInfo = new ArrayList<String>();
        FileList result = mService.files().list()
             .setPageSize(10)
             .setFields("nextPageToken, items(id, name)")
             .execute();
        List<File> files = result.getFiles();
        if (files != null) {
            for (File file : files) {
                fileInfo.add(String.format("%s (%s)\n",
                        file.getName(), file.getId()));
            }
        }

列出所有文件。去那里寻找更多信息: https://developers.google.com/drive/v3/web/quickstart/android

答案 1 :(得分:0)

您应按照以下步骤从控制台激活Drive API。

  1. 转到Google API控制台。
  2. 选择一个项目。
  3. 在左侧的边栏中,展开API和身份验证,然后选择API。
  4. 在显示的可用API列表中,单击Drive API的链接,然后单击Enable API。

答案 2 :(得分:0)

您必须每次都设置页面令牌,以便列出G驱动器中的所有文件:

private static List<File> getAllFilesGdrive(Drive service) throws IOException {
    List<File> result = new ArrayList<File>();
    Files.List request = service.files().list();

    do {
      try {
        FileList files = request.execute();

        result.addAll(files.getFiles());
        request.setPageToken(files.getNextPageToken());
      } catch (IOException e) {
        System.out.println("An error occurred: " + e);
        request.setPageToken(null);
      }
    } while (request.getPageToken() != null &&
             request.getPageToken().length() > 0);

    return result;
  }