1

在我的 android 应用程序中,用户必须通过同意提供其电子邮件 ID 的条款和条件进行注册。如果用户将应用程序升级到下一个版本,我不应该得到协议页面或电子邮件注册窗口。我正在使用全局变量来控制它,但是如果用户将应用程序升级到更新版本,全局变量会被重置,因此用户会再次获得协议页面和注册窗口。那么我该怎么做呢?提前感谢您的帮助。

4

3 回答 3

4

您有两种方法可以在本地媒体上存储数据。

  • 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 回答