初回起動時に1度だけダイアログを出す方法ではアプリケーションの初回起動時にダイアログを出す方法を紹介しました。
今回は、アプリケーションをアップデートした時に処理を行う方法を紹介します。
アップデートした際のリリースノートの表示や、新規Helpの表示などに活用出来ることと思います。
アップデートの際に処理を行う事は、TechBoosterで過去に取り扱っている、以下記事を組み合わせることで実現できます。
詳細は続きからどうぞ。
アプリケーションがアップデートした時に処理を行う為に、以下手順を踏みます。
- アプリケーションのバージョン情報を取得する
- バージョン情報をSharedPreferenceで管理する
- 管理されているバージョン情報(旧)と、最新のPackageのバージョン情報を比較する
これらのテクニックはそれぞれ、上記に挙げたリンク先で紹介されています。
不明点があれば、そちらも参考にしてみてください。
1.バージョン情報を取得し、SharedPreferenceで管理する
まずは、バージョン情報を取得する処理です。
SharedPreferenceに対し、保持しているバージョン情報(旧)を要求。
その後、最新のバージョン情報を取得しています。
//SharedPreferenceの設定 SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this); SharedPreferences.Editor editor = sp.edit(); int vCode = sp.getInt("VersionCode", 1); String vName = sp.getString("VersionName", "1.0"); //最新のバージョン情報を取得する PackageInfo pi = null; try { pi = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA); } catch (NameNotFoundException e) { e.printStackTrace(); } //最新のバージョン情報をPreferenceに保存 editor.putInt("VersionCode",pi.versionCode); editor.putString("VersionName",pi.versionName); editor.commit();
2.最新のバージョンと比較し、アップデートを検知する
AndroidMarketでは、アプリケーションのバージョンアップの際には必ずVersionCodeを変更する必要があります。
その点に着目し、管理している(Preferenceに保存している旧)VersionCode/VersionNameと最新の差異を比較しています。
下記ソースコード内、Toastを表示させている箇所がアップデート時に処理を行っている箇所となります。
if (pi != null) { // VersionCode でVersionUPを判断する if (pi.versionCode > vCode) { //VersionCodeが上がっている場合 Toast.makeText(this, "Version Up @VersionCode Change to"+Integer.toString(pi.versionCode), Toast.LENGTH_LONG).show(); } // VersionName でVersionUPを判断する if (!pi.versionName.equals(vName)) { //VersionNameが異なる場合 Toast.makeText(this, "Version Up @VersionName Change to "+pi.versionName, Toast.LENGTH_LONG).show(); } }
アップデートされたって判断したら必要な処理の実施と現在のバージョンコードの保存をしておくんだ。これで次のアップデートまで処理は行われないよね!」 |