如何使用DriveApi.MetadataBufferResult?

时间:2015-08-22 01:30:43

标签: android google-drive-api google-play-services google-drive-android-api

我正在使用Drive API并开始变得非常沮丧。我尝试使用查询根据名称搜索文件/文件夹。这个演示有一个很好的例子,说明如何执行此操作:https://github.com/googledrive/android-demos/blob/master/src/com/google/android/gms/drive/sample/demo/QueryFilesWithAInTitleActivity.java

但我不想将数据添加到ListView,我只想直接从MetadataBufferResult中提取信息(标题和ID,以便我可以使用它们)。但是我所看到的每个例子都只是这个ListView的东西,而且我还没有找到从MetadataBufferResult中提取任何信息的方法,或者找到关于它的好文档。

基本上我希望能够这样做(代码来自上面链接的演示):

final private ResultCallback<DriveApi.MetadataBufferResult> metadataCallback =
            new ResultCallback<DriveApi.MetadataBufferResult>() {
                @Override
                public void onResult(DriveApi.MetadataBufferResult result) {
                    if (!result.getStatus().isSuccess()) {
                        showMessage("Problem while retrieving results");
                        return;
                    }

                    //I haven't been able to find a way to do this
                    result.getDriveID();
                    result.getFileTitle();
                }
            };

简短版本:我想在某人的云端硬盘帐户的根目录中搜索标题为&#34; x&#34;的文件。然后读/写此文件。我的问题是我无法从我传递的MetadataBufferResult对象中提取数据,而且我所看到的所有示例都是使用我不想做的ListView输出的。

1 个答案:

答案 0 :(得分:7)

试试这个:

public void onResult(MetadataBufferResult rslt) {
  if (rslt != null && rslt.getStatus().isSuccess()) {
    MetadataBuffer mdb = null;
    try {
      mdb = rslt.getMetadataBuffer();
      if (mdb != null ) for (Metadata md : mdb) {
        if (md == null || !md.isDataValid()) continue;
          md.getTitle(); 
          md.getDriveId();
          md.getAlternateLink();
          //md.get.....();
      }
    } finally { if (mdb != null) mdb.close(); }
  }
}

输入'md。 ......'并且您将获得可用的元数据列表。完整的上下文可以找到here

祝你好运