我已经在网络和Android应用程序中集成了Google Drive API。我需要在两个应用程序中获取Google驱动器文件列表。 在Web应用程序中,我正在使用以下代码。
web.jss
function getFiles() {
query = "trashed=false and '" + FOLDER_ID + "' in parents and properties has { key='tvManagementApp' and value='1' and visibility='PUBLIC'}" ;
var request = gapi.client.drive.files.list({
"maxResults": 1000,
"orderBy": "createdDate",
"q": query
});
request.execute();
}
正如您在代码中看到的那样,我需要获取具有名为tvManagementApp且值为1的属性的文件列表。 这里绝对没有问题,我正在获取具有此属性的文件列表。
在Android应用中,我正在使用以下代码。
android.java
public Task<FileList> getFiles(String FOLDER_ID) {
Drive.Files.List drive = null;
try {
drive = mDriveService.files().list().setQ("'"+FOLDER_ID+"'"+" in parents and mimeType contains 'application/vnd.google-apps.folder' and trashed=false and properties has { key='tvManagementApp' and value='1' and visibility='PUBLIC'}").setSpaces("drive").setFields("files(*)");
} catch (IOException e) {
e.printStackTrace();
}
return Tasks.call(mExecutor, drive::execute);
}
但这不起作用,我遇到以下错误
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code": 400,
"errors": [
{
"domain": "global",
"location": "q",
"locationType": "parameter",
"message": "Invalid Value",
"reason": "invalid"
}
],
"message": "Invalid Value"
}
如果我删除属性的条件,它在Java中可以正常工作。我认为属性查询(properties has { key='tvManagementApp' and value='1' and visibility='PUBLIC'}"
)的语法存在问题。谁能告诉我我在这里想念的东西吗?