web-dev-qa-db-ja.com

誰かが最新のAndroid GoogleドライブのガイドREST API v3を提供しますか?

私や他の多くの人は、Googleドライブのセットアップに苦労していますREST API v3をAndroidアプリで使用できるようにしています。これは主に公式のGoogleドキュメントにAndroidの適切なクイックスタートガイドがありません。点在している(古い、または混乱している)情報のスクラップを見つけるだけです-しかし、必要なのはcomplete初心者がドライブを起動してファイルを開いたり編集したりできるように、初心者向けの最新のガイド(資格情報、依存関係、マニフェストの設定方法など)。

だから私は誰かがそのようなガイドを作成することをいとわないか、またはa)Google Drive APIの最新バージョンに関連するすでに作成されたそのようなガイドを指すことができるかどうか尋ねていますREST v3の詳細 ここ およびb)は、初心者が始める必要がある上記のすべての側面をカバーしていますか?

ArtOfWarfareが投稿したガイドライン here は絶対に完璧であり、まさに私が探しているものですが、残念ながら数年で古くなっています。誰でもこのガイドの最新バージョンを提供できますか?誠にありがとうございます。

7
ChrisUK

ドライブの使い方を理解する際に参照した記事REST APIは このページ でした。

Androidは初めてですが、ファイルのIDのリストを取得する方法は次のとおりです。これがあなたを助けることを願っています

ファイルのリストを返すメソッドを作成します(Java.io.Filesと混同しないでください)。これらはcom.google.api.services.drive.model.File;のインスタンスです。以下のメソッドは、githubの非推奨チュートリアルのDriveServiceHelperクラスの一部です。ソースファイルをチェックして、mExecutorおよびmDriveServiceインスタンスがどのように作成されるかを確認します。

public Task<FileList> queryFiles() {
    return Tasks.call(mExecutor, () ->
            mDriveService.files().list().setSpaces("drive").execute());
}

次に、リストを反復処理して各ファイルのIDを取得できます

for (File file : fileList.getFiles()) {
   file.getId()
}

IDを取得したら、ファイルを削除または更新できます。これは、Googleドライブにアップロードするたびにアプリが作成する重複ファイルを削除する方法の例です。

private void mQuery(String name) {
    if (mDriveServiceHelper != null) {
        Log.d(TAG, "Querying for files.");

        mDriveServiceHelper.queryFiles()
                .addOnSuccessListener(fileList -> {
                    for (File file : fileList.getFiles()) {
                        if(file.getName().equals(name))
                            mDriveServiceHelper.deleteFolderFile(file.getId()).addOnSuccessListener(v-> Log.d(TAG, "removed file "+file.getName())).
                                    addOnFailureListener(v-> Log.d(TAG, "File was not removed: "+file.getName()));
                    }
                })
                .addOnFailureListener(exception -> Log.e(TAG, "Unable to query files.", exception));
    }
}

driveServiceHelperクラスのdeleteFolderFileメソッドを次に示します

public Task<Void> deleteFolderFile(String fileId) {
    return Tasks.call(mExecutor, () -> {
        // Retrieve the metadata as a File object.
        if (fileId != null) {
            mDriveService.files().delete(fileId).execute();
        }
        return null;
    });
}

NB!ファイルの大きなリストに対してクエリを実行する必要がある場合、これは最良の方法ではありません。これは、アイデアを得るための単なるドラフトです。少なくともmQuery関数は、バイナリ検索アルゴリズムを利用してリスト内の特定のファイルを検索することで改善できます。

0
mkkabi