使用新的Drive API无法检索Google Drive文件和文件夹

3
我正在尝试从我的Android应用程序中获取Google Drive文件夹中的文件列表,但目前为止一直失败。我使用的是google-api-drive-v1-rev4-java-1.6.0-beta和google-api-client-1.9.0。我也正在构建类似于calendar-android-sample和tasks-android-sample的代码,这些代码示例位于http://code.google.com/p/google-api-java-client/wiki/Android
我无法找到如何使用files()来获取文件夹或甚至想要的文件夹的id的列表。tasks-android-sample在get()方法中使用“@default”来获取任务列表。那么,在get方法中我该使用什么来首先获取文件夹列表,然后搜索我的文件夹,获取其id,然后获取该文件夹中文件列表呢?
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();
  }
}

非常感谢您的提问。日历和任务示例成功使用我的API密钥从Google检索数据,但是这段代码为什么无法检索到Drive中的数据呢?

1个回答

5

谢谢Claudio,这很有道理。对于我的目的,我不需要访问所有文件,只需要访问我的文件夹。所以我想我需要创建一个带有我的应用程序的文件夹,然后只访问那个文件夹。同时,我已经开始使用文档API实现集成。我遇到了一些问题,其中返回的是type/html而不是xml,需要弄清楚发生了什么。我计划参加您在Google IO上关于如何将Drive与Android集成的会议(https://developers.google.com/events/io/sessions/gooio2012/705/),也许我们可以在那时聊聊? - phoeniix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接