5

所以我有点新手,我希望列出 Google Drive 中的所有文件和文件夹。

我已经下载了新的 SDK,获得了我的应用程序的所有授权等。我使用示例选择了一个带有打开器的文件夹,然后在 Listview 中显示内容。

但是-没有文件显示。它仅显示所选文件夹中的任何子文件夹。

因此,新的 SDK 似乎只有 SCOPE_FILE 访问权限,我收集到的只是允许应用程序查看它创建的文件,或者用户自己选择的文件。

但是由于我需要能够列出给定文件夹中的所有文件和文件夹,所以这对我来说根本不起作用。

从进一步阅读来看,我似乎必须使用 REST Java API(或其他东西),这将使我能够获得对文件和元数据的只读访问权限。

问题是,我很难找到我需要的 Jar 文件等,以及我应该把它们放在哪里。

请记住,我对这一切都是陌生的。

我正在使用 Android Studio,所以有人可以告诉我:

  • 我到底需要什么 JAR 文件

  • 我应该把它们放在哪里(在 libs 文件夹中?)

  • 我需要编辑 build.gradle 以包含它们吗?

  • 任何授权的例子?

  • 以及列出文件和文件夹的示例,例如在 ROOT 文件夹中

  • 我需要新的 SDK 吗?

感谢您对此的任何帮助。

4

1 回答 1

6

好吧,该死的 Java API 显然不支持访问所有文件所需的https://www.googleapis.com/auth/drive范围。我试过这个:

    googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Drive.API)
            .addScope(new Scope("https://www.googleapis.com/auth/drive"))
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

结果是“来自 Google API 的未知错误”和日志中的异常:

06-30 14:11:48.803   3023-29855/? E/ClientConnectionOperation﹕ Handling authorization failure
com.google.android.gms.drive.auth.c: Authorization failed: Unsupported scope: https://www.googleapis.com/auth/drive
        at com.google.android.gms.drive.auth.g.a(SourceFile:77)
        at com.google.android.gms.drive.api.g.<init>(SourceFile:226)
        at com.google.android.gms.drive.api.a.k.a(SourceFile:46)
        at com.google.android.gms.common.service.g.run(SourceFile:178)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)`

然后我尝试了另一个范围:https://www.googleapis.com/auth/drive.readonly没有以不同的方式工作:

06-30 14:12:25.082   3023-29981/? E/ClientConnectionOperation﹕ Handling authorization failure
com.google.android.gms.drive.auth.c: Authorization failed: No valid Drive authorization scope provided.
        at com.google.android.gms.drive.auth.g.a(SourceFile:87)
        at com.google.android.gms.drive.api.g.<init>(SourceFile:226)
        at com.google.android.gms.drive.api.a.k.a(SourceFile:46)
        at com.google.android.gms.common.service.g.run(SourceFile:178)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)

在 Google APIs 7.5.0 上试过这个,在这个延迟的 API 上浪费了两个小时。我相信 Java API 不能正确处理这个问题,我们需要用 JSON API 来做这件事。

编辑:我发现这个关于如何使用另一个 Java API 访问 Google Drive 的非常好的教程:https ://developers.google.com/drive/web/quickstart/java 不幸的是,它不适用于 Android:

   Caused by: java.security.NoSuchAlgorithmException: KeyStore JKS implementation not found
        at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:190)
        at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:139)
        at java.security.KeyStore.getInstance(KeyStore.java:116)

            在 com.google.api.client.util.SecurityUtils.getJavaKeyStore(SecurityUtils.java:53)

爱丽丝梦游仙境有人吗?

于 2015-06-30T12:17:26.953 回答