私のAndroidアプリケーションでは、ユーザーは電子メールIDを提供する利用規約に同意して登録する必要があります。ユーザーがアプリケーションを次のバージョンにアップグレードすると、同意ページや電子メール登録ウィンドウが表示されなくなります。グローバル変数を使用して制御していますが、ユーザーがアプリケーションを新しいバージョンにアップグレードすると、グローバル変数がリセットされるため、ユーザーは同意ページと登録ウィンドウを再度取得します。では、どうすればこれを行うことができますか?事前に助けてくれてありがとう。
3 に答える
データをローカル メディアに保存する方法は 2 つあります。
Shared Preference
SQLite Database
いつ共有設定を使用する必要がありますか?
保存する変数の数がそれ以上ではなく、プリミティブ値である必要がある場合は、 を使用できますShared Preference
。
サンプル コードについては、こちらを参照してください。
または
いつ SQLite データベースを使用する必要がありますか?
プリミティブではない変数の数を保存する必要があり、そのデータが長期間必要な場合は、 を使用する必要がありますSQLite Database
。
サンプル コードについては、こちらを参照してください。
今そのDepends on you as per your requirement.
SharedPreferencesを使用できます
class VersionInfo {
private VersionInfo() {}
private static final String PREF_VERCODE = "VERCODE";
public static final VersionInfo INSTANCE = new VersionInfo();
void setVersionCode(Context ctx, int ver) {
PreferenceManager.getDefaultSharedPreferences(ctx).edit().putInt(PREF_VERCODE, ver).commit();
}
int getVersionInfo(Context ctx) {
PreferenceManager.getDefaultSharedPreferences(ctx).getInt(PREF_VERCODE, 1);
}
}
このコードを使用してアプリにChangeLogを表示し、バージョンが変更されたかどうかを検出し、それに応じてChangeLogを表示します。場合によっては、同意書を表示する場合と表示しない場合に同じロジックを使用できます。
これらは私のグローバル宣言です:
// FOR STORING VERSION CODE IN SHAREDPREFERENCES
private static final String PRIVATE_PREF = "my_app_name";
private static final String VERSION_KEY = "version_number";
try {
// GET THE PREFERENCE SET FOR THE CHANGELOG
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
final boolean showChanges = prefs.getBoolean("displayChangelog", false);
PackageInfo pkgInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
// SET THE CURRENT VERSION IN SHAREDPREFERENCES
SharedPreferences sharedPrefs = getSharedPreferences(PRIVATE_PREF, Context.MODE_PRIVATE);
// SAVED VERSION CODE
int savedVersionCode = sharedPrefs.getInt(VERSION_KEY, 0);String.valueOf(savedVersionCode));
// GET NEW VERSION CODE
int currentVersionCode = pkgInfo.versionCode;String.valueOf(currentVersionCode));
Editor editor = sharedPrefs.edit();
editor.putInt(VERSION_KEY, currentVersionCode);
editor.commit();
if (showChanges == false) {
/***** DISPLAY THE CHANGELOG *****/
// DISPLAY DIALOG WHEN THE APPLICATION IS INSTALLED FOR THE FIRST TIME
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("displayChangelog", true);
editor.commit();
} else if (showChanges == true && currentVersionCode > savedVersionCode) {
/***** DISPLAY THE CHANGELOG AFTER AN UPGRADE *****/
// DISPLAY DIALOG CHANGELOG AFTER AN UPGRADE
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("displayChangelog", true);
editor.commit();
}
} catch (Exception e) {
e.printStackTrace();
}
編集: このコードと共に、Preferences
XML ファイルを使用して、ChangeLogを再度表示する機能を提供し、ユーザー設定の状態を保存して、次回の実行時にChangeLogを表示します。そのための XML:
<PreferenceCategory
android:key="changeLogOptions"
android:title="Changelog Options" >
<Preference
android:key="changeLog"
android:summary="See what has changed in the current version"
android:title="What\'s New" >
</Preference>
<CheckBoxPreference
android:defaultValue="false"
android:key="displayChangelog"
android:summary="@string/settings_changelog"
android:title="Hide The Changelog" >
</CheckBoxPreference>
</PreferenceCategory>