所以我有点新手,我希望列出Google云端硬盘中的所有文件和文件夹。
我已经下载了新的SDK,我的应用程序都获得了授权等。 我使用示例选择带有开启工具的文件夹,然后在Listview中显示内容。
但是 - NO 文件已显示。它仅显示所选文件夹中的所有子文件夹。
所以新的SDK似乎只有SCOPE_FILE访问权限,我收集的只允许应用程序查看它创建的文件,或者用户自己选择的文件。
但是因为我需要能够列出给定文件夹中的所有文件和文件夹,所以这对我来说根本不起作用。
从进一步阅读开始,我似乎必须使用REST Java API(或其他东西),这样我就可以获得对文件和元数据的只读访问权。
问题是,我无法根据Jar文件等找到我需要的内容,以及我应该放在哪里。
请记住,我对这一切都不熟悉。
我使用Android Studio,有人可以告诉我:
我需要的是哪些JAR文件
我应该放在哪里(在libs文件夹中?)
我是否需要编辑build.gradle才能包含它们?
任何授权示例?
以及列出文件和文件夹的示例,例如在ROOT文件夹中
我是否需要新的SDK?
感谢您提供任何帮助。
答案 0 :(得分: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 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)
在com.google.api.client.util.SecurityUtils.getJavaKeyStore(SecurityUtils.java:53)
爱丽丝梦游仙境?