SharedPreferences.Editor
クラスにはclear()
という機能があり、保存されたすべての設定が削除されます(commit()
以降)。
void updatePreferences() {
SharedPreferences prefs = ...;
if(prefs.getBoolean("update_required", true)) {
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
/*....make the updates....*/
editor.putBoolean("update_required", false)
editor.commit();
}
}
その後、あなたはどんなpreferenesにアクセスする前に、あなたのメインの(最初の起動)の活動でこれを呼び出す必要があります:あなたは必要な更新した場合を示しますブールフラグを作成することができます。
現在のバージョンを取得するには(versionCodeがマニフェストで宣言された)
EDIT:
int version = 1;
try {
version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
if(version > ...) {
//do something
}
EDIT
あなたには、いくつかの更新作業を行いたい場合は、いつでもバージョンを変更すると、次のようなことができます。
void runUpdatesIfNecessary() {
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
SharedPreferences prefs = ...;
if (prefs.getInt("lastUpdate", 0) != versionCode) {
try {
runUpddates();
// Commiting in the preferences, that the update was successful.
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("lastUpdate", versionCode);
editor.commit();
} catch(Throwable t) {
// update failed, or cancelled
}
}
}
ユーザーがGoogle Playマーケットから更新を行うことを決定することはできますか? – Mel
これはまさにこのコードがしていることです:バージョンが新しいものであれば、ユーザーは更新を行うことにしました – Phate
これは本当に美しい方法ではありませんが、現在のバージョンをsharedpreferences、それがあなたのアプリの実際のバージョン(上記のように、それを得る方法)と一致しないときは、何かをすることもできます。 –