Google云端硬盘查询失败

时间:2017-09-23 12:17:28

标签: android google-drive-android-api

我正在使用此代码:

GoogleApiClient client = new GoogleApiClient.Builder(this).addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addScope(Drive.SCOPE_APPFOLDER)
                .build();
Query query = new Query.Builder().addFilter(Filters.and(Filters.and(Filters.and(Filters.eq
                    (SearchableField.TITLE, getString(R.string.app_name)), Filters
                    .eq(SearchableField.TRASHED, false)), Filters.eq(SearchableField.PARENTS, Collections
                    .singletonList(Drive.DriveApi
                    .getRootFolder(client)
                    .getDriveId()))), Filters.eq(SearchableField.MIME_TYPE, GoogleDriveClient.FOLDER_MIME))).build();
            DriveApi.MetadataBufferResult result = Drive.DriveApi.query(client, query).await(TIMEOUT, TimeUnit.SECONDS);
            if (!result.getStatus().isSuccess()) {
                client.disconnect();
                return;
            }

始终存在错误:Status{statusCode=INTERNAL_ERROR, resolution=null}

我在Google控制台中启用了驱动器Api,我再次检查了我的SHA1指纹,其他操作正在运行。是否允许执行查询?

1 个答案:

答案 0 :(得分:1)

以下是Querying for Files

的文档
  

您可以使用 com.google.android.gms.drive.query 包   在用户的云端硬盘帐户中搜索元数据与您的元数据匹配的文件   搜索条件。您可以为特定文件夹或在   整个文件系统。

     

注意:Android Drive API仅适用于 https://www.googleapis.com/auth/drive.file 范围。这意味着只有用户使用您的文件打开或创建的文件   应用程序可以通过查询进行匹配。

以下是构建查询的示例。

  

通过构建Query类的实例来创建查询   并使用Filters指定搜索条件。下列   示例查找标题为“ HelloWorld.java ”的所有文件。

Query query = new Query.Builder()
        .addFilter(Filters.eq(SearchableField.TITLE, "HelloWorld.java"))
        .build();
     

您可以使用Filters类来构建表达式。多个过滤器   可以使用and和or方法连接在一起。

     

一旦构造了一个Query对象,就可以在它上面执行   使用Drive.DriveApi的整个文件系统如下:

Drive.DriveApi.query(googleApiClient, query);
     

此查询在My Drive(根)文件夹中以递归方式启动   遍历整个文件系统,返回匹配的所有条目   过滤表达式树。

     

或者,只能在特定文件夹中执行查询   DriveFolder类的一个实例,如下所示:

DriveFolder folder= ...;
folder.query(query);
     

此调用不会递归扫描;只有直接输入   返回文件夹匹配过滤条件。