3

AndroidアプリからGoogleドライブからフォルダ内のファイルのリストを取得しようとしていますが、これまでのところ失敗しています。google-api-drive-v1-rev4-java-1.6.0-betaとgoogle-api-client-1.9.0を使用しています。また、 http://code.google.com/p/google-api-java-client/wiki/Androidのサンプルからcalendar-android-sampleおよびtasks-android-sampleに似たコードを作成しています。

files()を使用してフォルダーのリストを取得する方法や、必要なフォルダーのIDを取得する方法が見つからないようです。tasks-android-sampleは、get()メソッドで「@default」を使用してタスクのリストを取得します。getメソッドで何を使用して、最初にフォルダーのリストを取得し、フォルダーを検索し、IDを取得してから、そのフォルダー内のファイルのリストを取得しますか?

AsyncLoadDocs.java :(注:Getオブジェクトにメタデータが含まれているかどうかを確認するためだけにgetFields()を使用していますが、現時点では含まれていません。)

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();
  }
}

どんな助けでもいただければ幸いです。カレンダーとタスクの両方のサンプルで、APIキーを使用してGoogleからデータを正常に取得できますが、このドライブコードを使用しないのはなぜですか。

4

1 に答える 1

5

Drive APIは、次の2つのクラスのファイルへのアクセスのみを許可します。

  • ユーザーが特定のドライブアプリで作成したファイル
  • ユーザーが特定のドライブアプリで開くファイル

セキュリティ上の理由から、ユーザードライブアカウントのすべてのファイルを一覧表示する方法はありません。

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

Android環境のその他のオプションについては、次のその他の回答を確認してください。

于 2012-06-12T01:46:31.367 に答える