2012-06-07 1 views
2

Я пытаюсь получить список файлов в папке с Google Диска из моего приложения Android, но пока не увенчался успехом. Я использую google-api-drive-v1-rev4-java-1.6.0-бета и google-api-client-1.9.0. Я также строю свой код, похожий на пример-календар-андроид-образец и задачи-андроид-образец из образцов на http://code.google.com/p/google-api-java-client/wiki/Android.Не удалось извлечь файлы и папки Google Диска с помощью нового API накопителей

Я не могу найти, как использовать файлы(), чтобы получить список папок или даже идентификатор папки, которую я хочу. Задачи-android-sample используют метод @default в методе get() для получения списка задач. Что бы я использовал в методе get, чтобы сначала получить список папок, найти папку, получить идентификатор, а затем получить список файлов в этой папке?

AsyncLoadDocs.java:. (Примечание: Я использую GetFields(), чтобы посмотреть, если Get объект содержит метаданные, которые в данный момент не делает)

package com.mysite.myapp.docs; 

import com.google.api.services.drive.Drive; 
import com.google.api.services.drive.Drive.Files; 
import com.google.api.services.drive.Drive.Files.Get; 
import com.google.api.services.drive.model.File; 

import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.widget.ArrayAdapter; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

/** 
* Asynchronously load the docs with a progress dialog. 
* 
* @author ms 
*/ 
class AsyncLoadDocs extends AsyncTask<Void, Void, List<String>> { 

private static final String TAG = "AsyncLoadDocs"; 
private final GDocsSync gDocsSync; 
private final ProgressDialog dialog; 
private final Drive entry = null; 
private com.google.api.services.drive.Drive service; 

    AsyncLoadDocs(GDocsSync gDocsSync) { 
    this.gDocsSync = gDocsSync; 
    service = gDocsSync.driveClient; 
    dialog = new ProgressDialog(gDocsSync); 
    } 

    @Override 
    protected void onPreExecute() { 
    dialog.setMessage("Loading docs..."); 
    dialog.show(); 
    } 

    @Override 
    protected List<String> doInBackground(Void... arg0) { 
    try { 
     List<String> folderNames = new ArrayList<String>(); 

     Get get = service.files().get("@default").setProjection("FULL"); 
     String fields = get.getFields(); 
     Log.d(TAG, "Fields: " + fields); 

     return folderNames; 
    } catch (IOException e) { 
     gDocsSync.handleGoogleException(e); 
     return Collections.singletonList(e.getMessage()); 
    } finally { 
     gDocsSync.onRequestCompleted(); 
    } 
    } 

    @Override 
    protected void onPostExecute(List<String> result) { 
    dialog.dismiss(); 
    } 
} 

Любая помощь будет оценена , Образцы «Календаря» и «Задачи» успешно извлекают данные из Google с помощью моего ключа API, почему код этого диска отсутствует?

ответ

4

предоставляет API приводном доступ только к двум классам файлов:

  • Файлы, которые пользователь создал с данным приложением Drive
  • файлов, которые пользователь открывает с данным приложением Drive

по соображениям безопасности, нет никакого способа, чтобы получить список всех файлов в учетной записи пользователя Drive:

https://developers.google.com/drive/apps_overview#granting_file-level_access

Дополнительные опции в Android среде, проверить эти другие ответы:

+0

Благодаря Клаудио, что имеет смысл. Для моих целей мне не нужен доступ ко всем файлам, только к моей папке. Поэтому, я думаю, мне нужно создать папку с моим приложением, а затем получить доступ именно к этому. Тем временем я начал внедрять интеграцию с помощью docs api. Я сталкиваюсь с проблемами, когда я возвращаю тип/html вместо xml и должен выяснить, что происходит там. Я планирую посетить вашу сессию (https://developers.google.com/events/io/sessions/gooio2012/705/) о том, как интегрировать диск с Android в Google IO, и, возможно, мы можем поболтать? – phoeniix