Я интегрировал Google Drive API в свое веб-приложение и приложение для Android. Мне нужно получить список файлов Google Drive в обоих приложениях.
В веб-приложении я использую следующий код.
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'}"
). Кто-нибудь может сказать мне, что я здесь скучаю?