Android 如何只返回Google Drive的第一个命中结果?
如果我们想将GoogleDrive与GoogleDriva Android API结合使用,我们可以通过查询检索所有符合条件的文件。多个文件可以具有相同的名称,因为名称不是唯一标识符。DriveId的是。但有时我们只对最新的文件感兴趣。通常的方式(从谷歌网站)是这样的Android 如何只返回Google Drive的第一个命中结果?,android,google-drive-api,google-drive-android-api,Android,Google Drive Api,Google Drive Android Api,如果我们想将GoogleDrive与GoogleDriva Android API结合使用,我们可以通过查询检索所有符合条件的文件。多个文件可以具有相同的名称,因为名称不是唯一标识符。DriveId的是。但有时我们只对最新的文件感兴趣。通常的方式(从谷歌网站)是这样的 void retrieveFiles() { SortOrder sortOrder = new SortOrder.Builder() .addSortDescending(SortableField.M
void retrieveFiles() {
SortOrder sortOrder = new SortOrder.Builder()
.addSortDescending(SortableField.MODIFIED_DATE)
.build();
Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, filename), "my_filename.txt"))
.setSortOrder(sortOrder)
.build();
MetadataBufferResult mbr = Drive.DriveApi.query(query).await().getMetadataBuffer();
// Now we can iterate through all the result hits
Metadata metadata;
Iterator<Metadata> iterator = mbr.getMetadataBuffer().iterator();
metadata = iterator.next(); // get the first hit
});
void retrieveFiles(){
SortOrder SortOrder=new SortOrder.Builder()
.addSortDescending(SortableField.MODIFIED_日期)
.build();
Query Query=new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE,filename),“my_filename.txt”))
.setSortOrder(排序器)
.build();
MetadataBufferResult mbr=Drive.DriveApi.query(query.wait().getMetadataBuffer();
//现在我们可以遍历所有结果命中
元数据;
迭代器迭代器=mbr.getMetadataBuffer().Iterator();
metadata=iterator.next();//获得第一个命中
});
此查询返回符合条件的所有文件的元数据。但是,将搜索限制在第一个文件(或任意数量的文件)是有用的,因为这是我们感兴趣的文件。排序使我们能够删减结果。
有没有办法将结果集限制为?例如SQL中的前N行。您可以设置pageSize以将返回的行数限制为1 没有办法像在SQL中那样按分组或按不同的方式进行分组。如果您有同名的文件,您将获得所有文件 我唯一能想到的就是添加一个orderBy 字符串
排序键的逗号分隔列表。有效密钥为 “createdTime”、“folder”、“ModifiedByTime”、“modifiedTime”、“name”, “quotaBytesUsed”、“Recent”、“sharedWithMeTime”、“Started”和 “通过Metime查看”。默认情况下,每个键按升序排序,但可能是 使用“desc”修饰符反转。用法示例: ?orderBy=文件夹,修改时间描述,名称。请注意,有一个 当前限制,适用于中有大约一百万个文件的用户 请求的排序顺序将被忽略 然后按“modifiedTime”排序,您似乎已经在这样做了。然后,您可以在本地处理重复项