3

永続的なデータ ストレージや初期設定などをテストするために何度も再インストールを行う必要があるデバッグ環境でこれに気付きました。本番環境では関係ないかもしれませんが、とにかく他の開発者に知らせるためにこれについて言及します。

アプリ フォルダー内のアプリによって作成されたファイルは、(たとえば IDE から) 手動でアンインストール/再インストールした後、クエリに対して「表示」されません。同じことが「エンコードされたドライブ ID」にも当てはまります。これはもはや有効ではありません。

おそらく「設計による」ものですが、「drive.google.com > アプリの管理 > [yourapp] > オプション > 非表示のアプリ データの削除」によって手動でクリーンアップされるまで、アプリ フォルダーに「孤立」が効果的に作成されます。また、アプリがメタデータ、タイトルなどによるファイルの検索に依存している場合、これらがなくなっているように見えるため、問題が発生します。私が言ったように、生産上の問題ではありませんが、開発中にフラストレーションを引き起こす可能性があります.

友好的な Google 社員でこれを確認できる人はいますか? 再インストール後にこれらのファイルにアクセスする他の方法はありますか?

4

3 に答える 3

4

このアプローチを試してください:

次のように使用requestSync()onConnected()ます。

@Override
public void onConnected(Bundle connectionHint) {
    super.onConnected(connectionHint);
    Drive.DriveApi.requestSync(getGoogleApiClient()).setResultCallback(syncCallback);
}

次に、そのコールバックで、次を使用してドライブの内容を照会します。

final private ResultCallback<Status> syncCallback = new ResultCallback<Status>() {
    @Override
    public void onResult(@NonNull Status status) {
        if (!status.isSuccess()) {
            showMessage("Problem while retrieving results");
            return;
        }
        query = new Query.Builder()
                .addFilter(Filters.and(Filters.eq(SearchableField.TITLE, "title"),
                        Filters.eq(SearchableField.TRASHED, false)))
                .build();
        Drive.DriveApi.query(getGoogleApiClient(), query)
                .setResultCallback(metadataCallback);
    }
};

次に、そのコールバックで、見つかった場合は、次を使用してファイルを取得します。

final private ResultCallback<DriveApi.MetadataBufferResult> metadataCallback =
        new ResultCallback<DriveApi.MetadataBufferResult>() {
    @SuppressLint("SetTextI18n")
    @Override
    public void onResult(@NonNull DriveApi.MetadataBufferResult result) {
        if (!result.getStatus().isSuccess()) {
            showMessage("Problem while retrieving results");
            return;
        }

        MetadataBuffer mdb = result.getMetadataBuffer();
        for (Metadata md : mdb) {
            Date createdDate = md.getCreatedDate();
            DriveId driveId = md.getDriveId();
        }

        readFromDrive(driveId);
    }
};

仕事終わり!

それが役立つことを願っています!

于 2016-04-27T10:18:49.073 に答える
3

Google Play サービスに問題があるようです。( https://stackoverflow.com/a/26541831/2228408 ) テストでは、Google Play サービスのデータを消去することで実行できます ([設定] > [アプリ] > [Google Play サービス] > [スペースの管理] > [すべてのデータを消去])。

または、現時点では、Drive SDK v2 を使用して実装する必要があります。

于 2014-10-25T03:07:38.270 に答える