EULA dialog shows correctly until there is an application update. If the user has already accepted the EULA dialog it should not show again after the update.
public class AppEULA {
private String EULA_PREFIX = "appeula";
private Activity mContext;
private static final String TAG = MainActivity.class.getSimpleName();
public AppEULA(Activity context) {
mContext = context;
}
private PackageInfo getPackageInfo() {
PackageInfo info = null;
try {
info = mContext.getPackageManager().getPackageInfo(
mContext.getPackageName(), PackageManager.GET_ACTIVITIES);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return info;
}
public void show() {
PackageInfo versionInfo = null;
try {
versionInfo = mContext.getPackageManager()
.getPackageInfo(mContext.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
// The eulaKey changes every time you increment the version number in
// the AndroidManifest.xml
final String eulaKey = EULA_PREFIX + versionInfo.versionCode;
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
boolean bAlreadyAccepted = prefs.getBoolean(eulaKey, false);
if (bAlreadyAccepted == false) {
....
show dialog
.setPositiveButton(R.string.accept,
new Dialog.OnClickListener() {
@Override
public void onClick(
DialogInterface dialogInterface, int i) {
// Mark this version as read.
SharedPreferences.Editor editor = prefs
.edit();
editor.putBoolean(eulaKey, true);
editor.commit();
// Close dialog
dialogInterface.dismiss();
I expect the EULA dialog not to show after application update if the user has already accepted it.