适用于Android的Google Drive API - 仅限Drive.SCOPE_FILE访问权限,需要只读

use*_*721 5 android google-drive-api google-drive-android-api

所以我有点新手,我希望列出Google云端硬盘中的所有文件和文件夹.

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

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

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

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

从进一步阅读开始,我似乎必须使用REST Java API(或其他东西),这样我就可以获得对文件和元数据的只读访问权限.

问题是,我无法根据Jar文件等找到我需要的内容,以及我应该放在哪里.

记住,我是这一切的新手.

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

  • 我需要什么JAR文件

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

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

  • 任何授权的例子?

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

  • 我是否需要新的SDK?

感谢您的帮助.

Mar*_*sny 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();
Run Code Online (Sandbox Code Playgroud)

结果是"来自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)`
Run Code Online (Sandbox Code Playgroud)

然后我尝试了另一个范围: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)
Run Code Online (Sandbox Code Playgroud)

在谷歌API 7.5.0上尝试了这个,并在这个延迟的API上浪费了两个小时.我相信Java API无法正确处理,我们需要使用JSON API执行此操作.

编辑:我已经找到了关于如何使用其他Java API访问Google云端硬盘的非常好的教程: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)
Run Code Online (Sandbox Code Playgroud)

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

爱丽丝梦游仙境有人吗?