Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何只返回Google Drive的第一个命中结果?_Android_Google Drive Api_Google Drive Android Api - Fatal编程技术网

Android 如何只返回Google Drive的第一个命中结果?

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

如果我们想将GoogleDrive与GoogleDriva Android API结合使用,我们可以通过查询检索所有符合条件的文件。多个文件可以具有相同的名称,因为名称不是唯一标识符。DriveId的是。但有时我们只对最新的文件感兴趣。通常的方式(从谷歌网站)是这样的

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”排序,您似乎已经在这样做了。然后,您可以在本地处理重复项