Gau*_*pta 1 android google-drive-api
下面是一段代码。该代码工作正常,但在其中一位使用 Samsung Tab 10.1 的用户的一个实例上除外
String pageToken = null;
do {
FileList remoteImageList = mService.files().list()
.setSpaces("appDataFolder")
.setPageToken(pageToken)
.setQ("mimeType='image/webp'")
.setPageSize(10)
.setFields("nextPageToken, files(id, name)")
.execute();
for (com.google.api.services.drive.model.File file : remoteImageList.getFiles()) {
File newLocalImage = new File(getExternalFilesDir(null), file.getName());
FileOutputStream fos = new FileOutputStream(newLocalImage);
mService.files()
.get(file.getId())
.executeMediaAndDownloadTo(fos);
fos.close();
}
pageToken = remoteImageList.getNextPageToken();
} while (pageToken != null);
Run Code Online (Sandbox Code Playgroud)
以下是 IOException 中的消息。
416 Requested range not satisfiable
{
"error": {
"errors": [
{
"domain": "global",
"reason": "requestedRangeNotSatisfiable",
"message": "Request range not satisfiable"
}
],
"code": 416,
"message": "Request range not satisfiable"
}
}
Run Code Online (Sandbox Code Playgroud)
从代码中可以看出,错误是在调用executeMediaAndDownloadTo方法时产生的。该方法的实现使用 MediaHttpDownloader (Google API 的一部分),并且实现看起来是正确的。我唯一能想到的是,Samsung Tab 10.1 设备有不同的 Google API 实现,这可能有 bug?
以前有人遇到过这个问题吗?
问题可能是您正在尝试下载一个已创建的没有任何内容的文件。每次您尝试获取此类文件时,您都会收到 416。要解决此问题,您可以使用数据更新文件。