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

思路:

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;
	}
}

【安卓】判断"全新安装初次打开、升级后初次打开、第二次打开",比如可用于判断是否应显示"引导页"、!,布布扣,bubuko.com

时间: 2024-10-09 12:24:51

【安卓】判断"全新安装初次打开、升级后初次打开、第二次打开",比如可用于判断是否应显示"引导页"、!的相关文章

首次打开应用是显示引导页

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {          //创建Window     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];                   //判断要显示的Controller

搭载24GB SSD的机型全新安装系统后,如何安装IRST&Express

操作系统:Windows7 32/64bit.Windows8 32/64bit 问题现象: "IRST (Intel Rapid Start Technology) 技术",部分华硕机型除了会搭载机械硬盘之外,还会搭载一颗24GB SSD,同时支持"IRST技术"和"ExpressCache技术",这两个技术会使用到24GB SSD,让系统启动更快. 但若重新格式化硬盘,全新安装系统到HDD后24GB SSD处于"闲置"状态

Visual Studio 打开解决方案后 弹出框显示 "正在打开文件..." 迟迟没反应 的解决方法

Visual Studio 打开解决方案后 弹出框显示 "正在打开文件...",任务管理器的devenv进程又很正常,不会显示"未响应". 而IDE的左下角有个 "正在等待分析完成..." 提示. 刚开始,我以为是VS插件问题,因为我刚安装了一个插件后,重启VS,打开解决方案就出现这个问题了,所以我以为是VS插件问题. 后来我把VS插件通通卸载了,把/ResetAddin /ResetSkipPkgs /ResetSettings 之类的deve

Virtualbox安装CentOS开启UEFI后启动不了

VirtualBox中使用EFI安装CentOS,关机后默认再开启时不能启动系统.解决方案:1.引导界面修改 Shell> FS0: FS0:\> cd EFI FS0:\EFI> cp centos\grubx64.efi BOOT\grubx64.efi 2.系统界面修改 cd /boot/efi/EFI cp centos/grubx64.efi BOOT/grubx64.efi 原文地址:http://blog.51cto.com/huanghai/2095718

iOS开发 - 判断程序第一次开启 以及 应用升级后第一打开的判断

现在很多app都加了开场的引导页,在用户第一次开启应用的时候呈现,给用户一些使用上的引导和说明,当用户第二次打开时就不显示了. 要达到这种效果其实只需要持久化一个flag即可.但是问题来了,当app升级之后,我们希望能够重新开启新的引导页,来告诉用户新版本的一些内容,这样的话,持久话一个flag的方法就无法实现了. “一个不行,那么就用多个吧.” 我们给这个flag 加上程序的版本号,这样当程序升级之后,因为版本号不同,会被判断为第一次开启. 在引导页结束的地方加入一下代码: NSString

点击页面判断是否安装app并打开,否则跳转app store的方法

常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码.但往往我们都是直接给推广图片加了一个下载链接(App Store中的).所以咱们来模拟一下用户的操作步骤: 1.用户第一次访问宣传页面 a.点击Banner,进入到APP Store中对应的APP下载页 b.APP下载页中提示:安装:用户点击安装 c.安装完成后,APP下载页中提示:打开:用户继续点击打开 d.用户正常使用APP 2.用户第二次访问宣传页面 a.点击Banner,进入到AP

Windows版Cacti全新安装与升级

全新安装 Cacti运行依赖的软件很多,mysql.PHP.Apache.Spine.rrd等,一个一个的安装非常繁琐,而且还容易出错,全新安装的话可以采用论坛提供的windows安装包安装,非常简单. 目前Cacti的最新版本是0.8.8b,但安装包的版本只有0.8.8a版的,没关系,我们可以先安装安装包,再单独下载Cacti 0.8.8b覆盖就可以了. Cacti安装包地址:点我下载 Cacti 0.8.8b地址:点我下载 安装完安装包过后,找到Cacti的位置,一般是D:\Cacti\Ap

跳过从Win7/8升级,直接格式化全新安装 Windows 10 并自动永久激活系统的方法教程

跳过升级,直接激活全新 Win10 的方法步骤教程: 下载 Windows 10 系统的 ISO 镜像 在你当前的 Win7 / Win 8 / 8.1 系统中,使用 DaemonTools 或右键选择装载 Win10 的镜像 在 Win10 镜像里的 Sources 文件夹下找到名为「gatherosstate.exe」的程序,将其复制到桌面.如果你嫌麻烦,我们也在文章结尾处提供了该文件的下载. 双击运行 gatherosstate.exe,稍等片刻,它将会在桌面上生成一个名为「Genuine

html5页面js判断是否安装app,以及判断是否在app内部打开html5页面

一.html5页面js判断是否安装app 目前还不能通过浏览器直接判断是否安装app 通过谷歌参考别人的方式和测试 我们知道安装了某个app后通过scheme跳转协议(引荐:http://www.jianshu.com/p/eed01a661186)进入到app 没有安装时点击链接是无效的 所以通过点击链接后到执行进入app之间的时间差来判断是否安装app 1.下面只是处理了安卓系统时 if (navigator.userAgent.match(/android/i) ){ var nowTim