当前位置: 代码迷 >> Android >> 【安卓】判断"崭新安装初次打开、升级后初次打开、第二次打开"比如可用于判断是否应显示"引导页"
  详细解决方案

【安卓】判断"崭新安装初次打开、升级后初次打开、第二次打开"比如可用于判断是否应显示"引导页"

热度:72   发布时间:2016-04-28 04:51:49.0
【安卓】判断"全新安装初次打开、升级后初次打开、第二次打开",比如可用于判断是否应显示"引导页"、!

思路:

1.基于SharedPreferences,每次打开时,根据上次打开时记录的版本即可区分此次打开的情形。



StoredData.java:

1.Application.onCreate中调用StoredData.getThis().markOpenApp();即可。其他位置就可以根据getLaunchMode判断打开类型了。

package com.example.test;import android.app.Application;import android.content.SharedPreferences;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.text.TextUtils;public class StoredData {	public static final int LMODE_NEW_INSTALL = 1; // 启动-模式,首次安装-首次启动、覆盖安装-首次启动、已安装-二次启动	public static final int LMODE_UPDATE = 2;	public static final int LMODE_AGAIN = 3;	private boolean isOpenMarked = false;	private int launchMode = LMODE_AGAIN; // 启动-模式	private static StoredData instance;	private SharedPreferences share; // 一般信息	public static StoredData getThis() {		if (instance == null)			instance = new StoredData();		return instance;	}	// -------启动状态------------------------------------------------------------	// 标记-打开app,用于产生-是否首次打开	public void markOpenApp() {		// 防止-重复调用		if (isOpenMarked)			return;		isOpenMarked = true;		String lastVersion = share.getString("lastVersion", "");		String thisVersion = getAppVersion();		// 首次启动		if (TextUtils.isEmpty(lastVersion)) {			launchMode = LMODE_NEW_INSTALL;			share.edit().putString("lastVersion", thisVersion).commit();		}		// 更新		else if (!thisVersion.equals(lastVersion)) {			launchMode = LMODE_UPDATE;			share.edit().putString("lastVersion", thisVersion).commit();		}		// 二次启动(版本未变)		else			launchMode = LMODE_AGAIN;	}	public int getLaunchMode() {		return launchMode;	}	// 首次打开,新安装、覆盖(版本号不同)	public boolean isFirstOpen() {		return launchMode != LMODE_AGAIN;	}	// -------------------------	// 软件-版本	public static String getAppVersion() {		String versionName = "";		Application app = MyApplication.getThis();		try {			PackageManager pkgMng = app.getPackageManager();			PackageInfo pkgInfo = pkgMng					.getPackageInfo(app.getPackageName(), 0);			versionName = pkgInfo.versionName;		} catch (Exception e) {			// TODO: handle exception			e.printStackTrace();		}		return versionName;	}}


  相关解决方案