Version位置:Android Studio进行安卓开发时在app的build.gradle中有一个defaultConfig里面有versionCode和versionName两个标签,代表了当前程序的版本信息,接下来简单说明一下这个版本信息的用处
- 管理升级:客户端启动时获取服务器最新版本号与当前版本进行对比,若有新版本则进行更新
- 引导界面:每次有大的更新发布需要添加一个引导界面对更新内容进行说明,通过判断版本号若是新的版本则显示引导界面,否则直接进入首页
- 版本标志:作为参数传给服务器,服务器根据不同版本显示不同内容,新版本发布会有用户选择继续使用老版本,这时服务器可能需要根据不同版本推送不同的信息,使得不同版本都能正常运行,也就是通常说的多版本维护,时间久了太旧的版本就会弃用,通过控制升级参数使用户强制升级否则不能用(不太友好,毕竟有些用户因设备原因无法升级新版本)或者提示某个版本以下不再维护
- 版本信息还有很多用处,不再一一列举
- 详细介绍一下版本号在升级管理中的应用,其他的类似
- 首先说明一点,安卓默认不允许低版本覆盖高版本,有类似需求时可以先卸载掉高版本再安装低版本
- 代码获取版本信息public static int getAppVersionCode(Context context) {
if (context != null ) {
PackageManager pm = context.getPackageManager();
if (pm != null) {
PackageInfo pi;
try {
pi = pm.getPackageInfo(context.getPackageName(), 0);
if (pi != null) {
return pi.versionCode;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
return -1;
}
*注:此处返回的是versionCode,versionName一般作为内部标识使用,pm中还可以获取很多其他的有用信息,例如firstInstallTime,lastUpdateTime,packageName等等 - 将版本号所谓value存入sharePreference中,从服务器获取最新的版本号,通过上段代码获取程序当前的版本号,若需要更新弹出类似下图的更新提示框
- 功能说明及实现思路
- 立即升级 :通过downLoadManager去下载新版本然后安装
注意要把下载文件加头application/vnd.android.package-archive这样下载的文件默认为可安装文件,下载完成后自动打开是否安装页面 - 稍后再说 :延迟一段时间之后再次提醒
将服务器当前版本号作为key,value为当前时间存入sharePreference中,再次启动程序时获取服务器当前最新版本号若在sharePreference中找到了对应的versionCode且当前时间减去sharePreference中存储的时间大于一天(具体时间自己设置)则弹出新版本升级框 - 不再提醒:服务器当前最新版本不再提示升级
同上,将服务器当前版本号作为key存入sharePreference中,再次启动程序时获取服务器当前最新版本号若在sharePreference中找到了对应的versionCode则不弹出新版本升级框
- 立即升级 :通过downLoadManager去下载新版本然后安装