0

在 Android 应用程序中,我正在尝试使用RESTful API列出驱动器中的文件。

https://developers.google.com/drive/v2/reference/files/list

我在 Google Drive 中有 332 个(数字只是举例)文件,我运行以下代码片段(直接取自上面的文档),试图列出它们:

  private com.google.api.services.drive.Drive _svc;
  ...
  Files.List rqst = _svc.files().list(); //.setFields("items(title, id)").setMaxResults(90); 
  do try {
    FileList list = rqst.execute();
    Log.i("TAG", "count: " + list.getItems().size());
    rqst.setPageToken(list.getNextPageToken());
  } catch (IOException e) { rqst.setPageToken(null); }
  while (rqst.getPageToken() != null && rqst.getPageToken().length() > 0);

如果我使用普通请求:

  _svc.files().list();

循环按预期产生分页结果,即100 + 100 + 100 + 32 个文件

添加额外的修饰符:

  _svc.files().list().setFields("items(title, id)");

只给了我 100 个结果的第一页。' getNextPageToken() ' 产生 NULL,表示没有更多可用数据。

不用说,使用“ setMaxResults() ”修饰符会产生相同的结果。例如,如果我添加' setMaxResults(90) ',

_svc.files().list().setMaxResults(90);

产生 90+90+90+62 = 332 个文件,但是

_svc.files().list().setMaxResults(90).setFields("items(title, id)");

仅产生 90 个文件,没有更多可用页面。

我假设我一定做错了什么,因为我发现我不太可能在一个已经存在多年的界面中发现从未报告过的错误(在谷歌搜索数小时后)。

4

1 回答 1

2

您需要请求 nextPageToken 作为您想要接收的字段之一。否则,它将显示为 null,因为它不包含在响应中。

于 2014-06-16T17:24:11.483 回答