最快/最短的根文件夹方式?

时间:2012-09-18 10:13:39

标签: java android google-drive-api

我在Android上使用Google Drive SDK v2来获取根文件夹列表。目前,我看到了这些必要的步骤 - 似乎永远都会加载。有没有更快的方法?

我尝试使用q =参数进行搜索,但我没有让它工作(FileList与Files.List) - 不同的API级别?

FileList files = drive.files().list().setQ("'root' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false");

这就是我现在所做的事情:

About about = drive.about().get().execute();
if (about != null) {
    ChildList childList = drive.children().list(about.getRootFolderId()).execute();
    if (childList != null) {
        List<ChildReference> listChildReference = childList.getItems();
        for (ChildReference childReference : listChildReference) {
            File file = drive.files().get(childReference.getId()).execute();
            if (file != null) {
                String fileExtension = file.getFileExtension();
                String mimeType = file.getMimeType();
                if (mimeType != null
                        && mimeType.equals("application/vnd.google-apps.folder")
                        && (fileExtension == null || fileExtension.equals(""))) {
                    Log.d(this.getClass().getName(), file.getTitle());
                }
            }
        }
    }
}

Android应用最快的是什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

我的个人意见是避免使用Drive SDK并直接调用REST API。这是一个相当简单的API,以及文档的结构方式,无论如何都要强制您理解它以便使用SDK。如果某些功能不起作用,您可以直接将您的应用与线路上发生的事情进行比较并解决任何问题。

答案 1 :(得分:0)

找到它:

@Override
protected ArrayList<File> doInBackground(final Void... voids) {
    ArrayList<File> result = new ArrayList<File>();

    Files.List request = null;

    boolean ok = true;

    do {
        try {
            request = drive
                    .files()
                    .list()
                    .setMaxResults(200)
                    .setQ("'root' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false");
            FileList files = request.execute();

            result.addAll(files.getItems());
            request.setPageToken(files.getNextPageToken());
        } catch (IOException exception) {
            ok = false;
        }
    } while (ok && request.getPageToken() != null && request.getPageToken().length() > 0);

    return result;
}