2014-04-10 1 views
4

저는 초보자이며 Google 드라이브의 모든 파일과 폴더를 나열하려고합니다.Android 용 Google 드라이브 API - 드라이브 만 가능합니다 .SCOPE_FILE 액세스는 읽기 전용이 필요합니다.

새 SDK를 다운로드했고, 내 응용 프로그램을 모두 승인했습니다. 샘플을 사용하여 오프너가있는 폴더를 선택한 다음 Listview에 내용을 표시했습니다.

BUT - 아니오 파일이 표시되었습니다. 선택한 폴더의 하위 폴더 만 표시합니다.

새 SDK는 SCOPE_FILE 액세스 만 가지고 있으며, 수집 한 파일은 앱이 만든 파일이나 사용자가 직접 선택한 파일을 볼 수 있습니다.

그러나 주어진 폴더의 모든 파일과 폴더를 나열 할 수 있어야하므로이 기능이 전혀 작동하지 않습니다.

더 많은 정보를 읽으면서 REST Java API (또는 무언가)를 사용해야하며 파일과 메타 데이터에 대한 읽기 전용 액세스를 허용 할 것입니다.

문제는 필자가 Jar 파일 등의 관점에서 정확히 필요한 부분을 찾는 데 어려움을 겪고 있습니다.

나는이 모든 것을 알고 있습니다.

나는 안드로이드 Studio를 사용하고, 그래서 누군가가 나에게 말할 수 : 그들을 놓아야 어디 정확히

  • 필요

    • 무엇 JAR 파일

    • 을 (libs와 폴더에?)

      build.gradle을 포함하려면 해당 파일을 편집해야합니까?

    • ?

    • 및 파일 및 폴더를 나열하는 예입니다. ROOT 폴더에

    • 새로운 SDK가 필요합니까?

    감사합니다.

  • +0

    나는 아래의 링크를 내가 몇뿐만 아니라 읽었했다 http://stackoverflow.com/questions/10331342/access-to-all-files-on-a-users-google-drive –

    +0

    감사를 참조 게시물. 그러나 나는 내가해야 할 일에 대해 혼란 스럽다. – user3437721

    +0

    누구든지이 작업을 수행하는 방법을 알고 있습니까? – user3437721

    답변

    5

    그래, 젠드 자바 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(); 
    

    을 그리고 결과는 "구글 API에서 알 수없는 오류"와 로그에서 예외입니다 : https://www.googleapis.com/auth/drive.readonly 다른 방식으로 작동하지 않았다 :

    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)` 
    

    난 다음 다른 범위를 시도 :

    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로 2 시간을 낭비했습니다. Java API가이를 제대로 처리 할 수 ​​없다고 생각하며 JSON API를 사용하여이 작업을 수행해야합니다.

    편집 : https://developers.google.com/drive/web/quickstart/java 불행히도, 안드로이드에서 작동하지 않습니다 : com.google.api에서

    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) 
    

    나는 Google 드라이브에 액세스하기 위해 다른 자바 API를 사용하는 방법에 대한이 아주 좋은 자습서를 발견했다. client.util.SecurityUtils.getJavaKeyStore (SecurityUtils.java:53)

    이상한 나라의 앨리스 누구?