我正在使用此代码:
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指纹,其他操作正在运行。是否允许执行查询?
答案 0 :(得分:1)
您可以使用
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);
此调用不会递归扫描;只有直接输入 返回文件夹匹配过滤条件。