Google Drive Android API:无法使用查询查找文件

时间:2016-06-27 17:24:05

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

在我的应用中,我连接到Google Api:

mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addApi(Drive.API)
    .addScope(Drive.SCOPE_FILE)
    .addScope(Drive.SCOPE_APPFOLDER)
    .addConnectionCallbacks(mGDriveCallback)
    .addOnConnectionFailedListener(mGDriveCallback)
    .build();
mGoogleApiClient.connect();

然后在onConnected mGDriveCallback函数中发出查询请求:

Query query = new Query.Builder()
    .addFilter(Filters.eq(SearchableField.TITLE, "buffer.txt"))
    .build();
Drive.DriveApi.query(mGoogleApiClient, query).setResultCallback(mFindFileCallback);

onResult的{​​{1}}中,我检查结果:

mFindFileCallback

现在,即使我亲自上传了" buffer.txt"在我的驱动器上,我收到空结果的metabuffer。因此,代码显示"文件未找到"警告。如果我想找到一个文件夹,也会发生同样的情况。我尝试将if (!result.getStatus().isSuccess()) { Log.w(TAG, "Problem while retrieving files"); } else { Log.i(TAG, "Results size: " + result.getMetadataBuffer().getCount()); if (result.getMetadataBuffer().getCount() > 0) { Metadata md = result.getMetadataBuffer().get(0); Log.i(TAG, "DriveId: " + md.getDriveId()); } else { Log.w(TAG, "File not found"); } } 替换为Filters.eq,但没有取得任何成功。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

基于Official Google Documentation遇到File not found错误意味着用户没有对文件的读取权限或文件不存在。

{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found {fileId}"
}
],
"code": 404,
"message": "File not found: {fileId}"
}
}

建议采取的措施:向用户报告他们对该文件没有读取权限或该文件不存在。告诉他们他们应该要求所有者获得该文件的许可。

注意:确保在发出access_token文件元数据请求时提供正确的GET

以下是相关的SO票证:Drive API for Android unable to access the file created by same App