所以我是一个新手,我想列出所有的文件和文件夹在谷歌驱动器。
我已经下载了新的sdk,我的应用程序都获得了授权等等。
我使用示例选择一个带有打开器的文件夹,然后在ListView中显示内容。
但是-没有显示任何文件。它只显示选定文件夹中的任何子文件夹。
因此,新的sdk似乎只有scope_文件访问权限,我收集到的权限只允许应用程序查看它创建的文件,或者用户自己选择的文件。
但由于我需要列出给定文件夹中的所有文件和文件夹,所以这对我来说根本不起作用。
从进一步的阅读看来,我必须使用其余的Java API(或某些东西),这将允许我对文件和元数据进行只读访问。
问题是,我很难找到在jar文件等方面到底需要什么,以及应该放在哪里。
记住,我对这一切都不熟悉。
我在用android工作室,有人能告诉我:
我到底需要什么jar文件
我应该把它们放在哪里(libs文件夹里?)
我需要编辑build.gradle来包含它们吗?
有授权的例子吗?
以及列出文件和文件夹的示例,例如在根文件夹中
我需要新的sdk吗?
谢谢你的帮助。
最佳答案
好的,该死的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不能正确处理这个问题,我们需要用JSONAPI来实现。
编辑:我找到了一个非常好的教程,说明如何使用另一个Java API来访问谷歌驱动器: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)
谷歌、API、客户端、UTI.SuffiTyliUs.GETJavaKiStk(安全性UTILLS.java:53)
爱丽丝梦游仙境有人吗?