Android(安卓)App 升级 实现逻辑
16lz
2021-01-24
android:versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户。
android:versionName:这个是我们常说明的版本号,由三部分组成<major>.<minor>.<point>,该值是个字符串,可以显示给用户。
可根据app packagename 或者 app name 来进行校验,app 是否已安装。
publicstaticbooleanisAppInstalled(Contextcontext,Stringpackagename){finalPackageManagerpackageManager=context.getPackageManager();List<PackageInfo>pinfo=packageManager.getInstalledPackages(0);List<String>pName=newArrayList<String>();if(pinfo!=null){for(inti=0;i<pinfo.size();i++){Stringpn=pinfo.get(i).packageName;pName.add(pn);}}returnpName.contains(packagename);}
校验App是否需要升级,需要比对VersionCode
publicstaticintgetCurVersion(Contextcontext,Stringpackagename){intcurversion=0;try{//---getthepackageinfo---PackageManagerpm=context.getPackageManager();PackageInfopi=pm.getPackageInfo(packagename,0);curversion=pi.versionCode;if(curversion<=0){return0;}}catch(Exceptione){if(Constants.DebugMode){Log.e("VersionInfo","Exception",e);}}returncurversion;}
校验完成后,可选择静默安装:
publicstaticvoidinstall(Contextcontext,StringfilePath){Intenti=newIntent(Intent.ACTION_VIEW);i.setDataAndType(Uri.parse("file://"+filePath),"application/vnd.android.package-archive");i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);}
更多相关文章
- Android(安卓)studio 3.4中gradle版本5.1.1和及历史插件版本对应
- 4、Android(安卓)SDK命令行工具AAPT2
- Android(安卓)版本(列表)
- Android(安卓)String format
- 让Android应用程序支持安装到SD卡
- Android界面与交互设计原则
- android利用反射来解决版本兼容问题。
- 【OpenCV3.3】搭建VS2017+Android开发环境
- android 打电话的例子