2015-01-12 14 views
5

Googleドライブのappdataフォルダにバックアップを保存できるようにアプリが設定されています。すべて同じデバイス上で完璧に動作します。バックアップを作成するときに、アプリケーションのデータを削除して、すべてのデータを復元します。Android - Googleドライブの他のデバイスのappdataフォルダにアクセスしますが、同じアプリ

ただし、1台のデバイスにバックアップしようとすると別のデバイスにインストールし、復元しようとするとファイルが見つかりません。元のデバイスでアプリをアンインストールして、同じデバイスに再インストールして復元しようとすると、同じことが起こります。どちらの場合も、Googleドライブにログインするときにappdataフォルダにファイルがあることがわかっているにもかかわらず、ファイルが見つかりませんでした。

私は、DRIVE_IDがデバイスごとに異なるため、デバイス間で動作するファイルのDRIVE_IDの代わりにRESOURCE_IDを使用する必要があると読んでいます。しかし、私はRESOURCE_IDを取得する方法を見た唯一の方法は、driveId.getResourceId()を使用することであり、別のデバイスから適切なDRIVE_IDを取得できません。

tl; dr:別のデバイス/インストールで作成されたappdataフォルダから適切なファイルを取得するにはどうすればよいですか?

答えて

11

私のアプリにもデータベースバックアップオプションがあります。新しいGoogleドライブAndroid APIを使用して実装しましたが、重要なことは、デバイス間で問題なく動作します。

  1. 読み取りまたはGoogleドライブに何かを書き込む前に、必ずすべてが同期されていることを確認するためにrequestSyncを呼び出し、最新の(それhereを使用する方法を参照してください)。

    は、ここで私はそれをやったと私はお勧め何かです。

  2. 識別子の代わりにクエリを使用してファイルを名前で取得します。 Googleドライブでは同じ名前の複数のファイルを使用できるため、日付順に並べ替えて最新のものを使用してください。
  3. 複数のバックアップファイルを同じ名前で作成しないようにするには、クエリを使用して、バックアップファイルがGoogleドライブに既に存在するかどうかを確認し、見つかった場合は開いて上書きします。
  4. これはあなたが好きではないと思うポイントです:私はAppfolderを使用しないことをお勧めします。 Googleでは、アプリをアンインストールして再インストールする際に、同期の問題がある可能性があることを認識しました。アプリでAppfolderを使用しようとしたところ、Googleドライブに通常のフォルダが作成されました。それで、この3つの推奨事項を採用する前に最初の3つの推奨事項を試すことができます。

これらの点が実装に役立つことを願っております。他に必要なものがあれば教えてください。

+0

残念ながら、あなたはおそらく正しいでしょう。今のところ私は通常のフォルダを使用し、ユーザーはそれが迷惑メールだとは思わないと思って削除します。彼らはそれに私のアプリの名前を持っているので、しかし、彼らはそれをするべきではありません。ありがとう! –

+0

面白いことに、彼らがそれを削除した場合、あなたのGDAAアプリは数日目に見えるので、死から戻すのに十分な時間があります。 isTrashed()フラグをオンにしても表示されません。あなたはそれに書いたり、そこにファイルを作成することさえできます。ユーザーがゴミ箱を空にしても、それが見えるようになるまで(固定されるまで)、1年の記念日が近づいているので、それは永久的な機能になるかもしれません。 http://stackoverflow.com/questions/22515028を参照してください。 – seanpj

+0

私はそれを訂正してください、あなたのAndroidアプリは実際にはそれがなくなってからの手掛かりがないため、死から戻すことはできません。だから、それは数日後まで喜んでそれを使用するでしょう...今、それはN日間のデータがなくなってしまいました。 – seanpj

関連する問題