java - 无法使用 Filters.sharedWithMe() 通过 Google Drive Api 获取与我共享的文件

标签 java android google-drive-api google-drive-android-api

我的 Google 云端硬盘中有一些其他人与我共享的文件,我希望能够查询这些文件。不幸的是,MetadataBuffer 的结果计数为 0

这是代码:

private GoogleApiClient mGoogleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    mGoogleApiClient = new GoogleApiClient.Builder(this).addApi(com.google.android.gms.drive.Drive.API)
            .addScope(com.google.android.gms.drive.Drive.SCOPE_FILE).addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this).build();

}

@Override
protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}

@Override
public void onConnected(Bundle arg0) {
    Query query = new Query.Builder().addFilter(Filters.sharedWithMe()).build();
    Drive.DriveApi.query(mGoogleApiClient, query).setResultCallback(metadataCallback);
}

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

                MetadataBuffer buffer = result.getMetadataBuffer();
                if(buffer != null) {
                    int cnt = buffer.getCount();
                    Log.d(TAG, "BUFFER COUNT: " + cnt);
                    for(int i = 0; i < cnt; i++) {
                        Metadata meta = buffer.get(i);
                        Log.d(TAG, meta.getTitle());
                    }
                    buffer.close();
                }
            }
        };

        ....................

我正在使用新版 Google 云端硬盘,并且我还尝试将一些共享文件从传入文件夹移动到我的云端硬盘 根。依然没有。 我将不胜感激任何帮助和建议。

最佳答案

正如 unable to query the files "shared with me" from google drive using Google drive api android 上所述,目前,驱动器 API 允许您仅访问应用程序创建的驱动器中的数据。

您可以通过更改自行验证 查询 query = new Query.Builder().addFilter(Filters.sharedWithMe()).build();查询查询 = new Query.Builder().build();

您只能看到一个名为“App Data”的文件夹

要访问其他文件,您需要使用drive java api,如https://developers.google.com/drive/android/auth#connecting_and_authorizing_the_google_drive_android_api中所述。

Note: The Google Drive Android API currently only supports drive.file and drive.appfolder authorization scopes. If your application requires additional permissions or features not yet available in the Drive Android API, you must use the Google APIs Java Client.

关于java - 无法使用 Filters.sharedWithMe() 通过 Google Drive Api 获取与我共享的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26929154/

相关文章:

java - 找不到 fop 包(我认为)

java - 如何使用 Xuggler 在 RTP 数据包中编码媒体文件

java - 什么是 AOSP 工具链?

android - 从服务启动 Activity 并等待结果

java - 将 Java 枚举序列化为 XML 的最佳实践是什么?

android - 如何从可移植驱动器运行用于 Android 开发的 JVM、SDK 和 eclipse?

android - 如何从 Android 中的 WSDL 文件生成代码?

android - 在Android中以编程方式放大图片

google-sheets - SUMIF 不带删除线

node.js - 使用 googledrive.files.copy 时设置新文件名