2

新しいデータ構造でアプリのアップデートをリリースする予定です。したがって、ユーザーがアプリをアップデートする場合は、現在のデータをアップデートする必要があります。だから私は、ユーザーが私のアプリを更新したのか、新しいコピーをインストールしたのかをプログラムで確認するにはどうすればよいのでしょうか(新しいコピーがインストールされている場合は、何も更新する必要はありません)?

4

1 に答える 1

8

SQLite

データが SQLite データベースにある場合は、コードを に実装できますSQLiteOpenHelper.onUpgrade()

以前のバージョンの確認

そうでない場合は、デバイスで開いていた以前のバージョンを確認する何らかの方法が必要です。何かのようなもの:

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
// Use SharedPreferences to store something like "LAST_VERSION_RUN" = pInfo.versionName

次に、以前のバージョンが現在のバージョンと等しくないかどうかを確認できます。もちろん、この種のコードは以前のバージョンにも存在する必要があります。アプリがすでに公開されている場合、アプリがアップグレードされたかどうかを検出するコードを実装する方法はありません。

現在のバージョンの確認

この場合にできることは、アプリのバージョンを検出してから、データ スキーマを再度更新しないようにフラグを設定することだと思います。たとえば、アプリのバージョンが 1.0.2 で、現在は 1.0.3 であるとします。

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
if (pInfo.versionName.equals("1.0.3") && /* some SharedPreference value */ == false) {
    // upgrade
    // set SharedPreference value to true
}

SQLite を使用していない場合は、これを実装するのが最善の方法になると思います。

于 2012-12-01T17:26:53.383 に答える