1

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 アプリの最速は?

前もって感謝します。

4

2 に答える 2

1

私の個人的な意見は、Drive SDKを避け、RESTAPIを直接呼び出すことです。これはかなり単純なAPIであり、ドキュメントの構造は、SDKを使用するためにとにかく理解する必要があります。何かがうまくいかない場合は、アプリをネットワーク上で起こっていることと直接比較して、問題を解決できるという利点があります。

于 2012-09-18T15:19:44.270 に答える
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;
}
于 2012-09-18T18:46:59.417 に答える