Android Drive API - 检查文件是否存在始终表示不存在

时间:2016-06-17 06:24:11

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

我正在使用这段代码来检查Drive中是否存在文件:

Query query = new Query.Builder()
                        .addFilter(Filters.eq(SearchableField.TITLE, "tmp.txt"))
                        .build();
new MyAsyncTask().execute(query);

class MyAsyncTask extends AsyncTask<Query, Void, MetadataBufferResult>{
    @Override
    protected MetadataBufferResult doInBackground(Query... params) {
        return Drive.DriveApi.query(getGoogleApiClient(), params[0]).await();
}

   @Override
   protected void onPostExecute(MetadataBufferResult metadataBufferResult) {
       if(metadataBufferResult.getMetadataBuffer().getCount()==0)
           showMessage("File does not exist");
       else
           showMessage("File exists");
    }
}

我的逻辑基本上是使用Query来过滤掉名为“tmp.txt”的所有文件,然后检查这样返回的MetaDataBuffer的计数是否不为0.但是,无论文件是否存在,计数是始终为0,并且消息显示为“文件不存在”。我在这里错过了什么?我正在使用Android提供的android-demo-master中的QueryFilesActivity的修改版本。

1 个答案:

答案 0 :(得分:1)

查询返回0项有三个原因:

  1. 该项目不存在。
  2. 该项目存在,但您的应用无法访问该项目。
  3. 该项目存在(在服务器上),您的应用程序可以访问该项目,但该项目未在本地同步(设备处于脱机状态,或缓存不是最新的)。在这种特殊情况下,您可以调用requestSync方法以确保更新本地缓存并再次查询。