我正在尝试从我的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对象是否包含任何元数据,此时没有包含)。
我无法找到如何使用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中的数据呢?