EULA 对话框正确显示,直到有应用程序更新。如果用户已接受 EULA 对话框,则更新后不应再次显示。
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();
如果用户已经接受,我希望 EULA 对话框不会在应用程序更新后显示。