1

私のAndroidアプリケーションでは、ユーザーは電子メールIDを提供する利用規約に同意して登録する必要があります。ユーザーがアプリケーションを次のバージョンにアップグレードすると、同意ページや電子メール登録ウィンドウが表示されなくなります。グローバル変数を使用して制御していますが、ユーザーがアプリケーションを新しいバージョンにアップグレードすると、グローバル変数がリセットされるため、ユーザーは同意ページと登録ウィンドウを再度取得します。では、どうすればこれを行うことができますか?事前に助けてくれてありがとう。

4

3 に答える 3

4

データをローカル メディアに保存する方法は 2 つあります。

  • Shared Preference
  • SQLite Database

いつ共有設定を使用する必要がありますか?

保存する変数の数がそれ以上ではなく、プリミティブ値である必要がある場合は、 を使用できますShared Preference

サンプル コードについては、こちらを参照してください。

または

いつ SQLite データベースを使用する必要がありますか?

プリミティブではない変数の数を保存する必要があり、そのデータが長期間必要な場合は、 を使用する必要がありますSQLite Database

サンプル コードについては、こちらを参照してください。

今そのDepends on you as per your requirement.

于 2012-11-07T06:02:16.877 に答える
3

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);
}
}
于 2012-11-07T05:55:08.930 に答える
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();
    }

編集: このコードと共に、PreferencesXML ファイルを使用して、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\&apos;s New" >
    </Preference>
    <CheckBoxPreference
        android:defaultValue="false"
        android:key="displayChangelog"
        android:summary="@string/settings_changelog"
        android:title="Hide The Changelog" >
    </CheckBoxPreference>
</PreferenceCategory>
于 2012-11-07T06:09:47.433 に答える