在JAVA中使用Google Drive Api并在查询中设置属性条件时,无法获取文件列表

时间:2019-05-06 09:43:15

标签: android google-drive-android-api

我已经在网络和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'}")的语法存在问题。谁能告诉我我在这里想念的东西吗?

0 个答案:

没有答案