几乎每个app都要涉及到版本迭代,所以,版本更新是一份很重要的功能。今天我也给我的app做了一份版本更新的功能。
1.基础知识,打开项目app里,找到bulid.gradle,可以看到versionCode 和versionName,其中versionCode是整型值,理论上,每次改动其值都要加1,versionName是版本名,这个也就是我们在app里经常看到的版本名:v1.0.1.
我们升级版本的原理就是,请求后台,拿到当前程序的版本号,也就是VersionCode,去和请求到的数据作比对,如果自己的服务器返回的版本号大于当前的就可以提示更新了。
2.由于要做到兼容,我们不得不提动态权限和8.0出现的问题。
首先,我们得在配置文件里声明一些需要的权限。
这两个权限需要特殊注意一下。
接着我们找到合适的时机,做一次网络请求,然后判断是否要更新
然后,就是要切记,一定要开启先的线程去下载
这里需要注意下,当我们的file文件下载完毕,需要安装的时候,是很容易出错的,这个时候我们要分版本来判断,也就是在applyInstallCheck方法里
判断当前系统如果是大于等于8.0,那么就要判断是否有安装apk的权限,这个权限是8.0后新出现的,百度一下就可以看到详细的介绍,Android 8.0 中,Google 移除掉了容易被滥用的“允许位置来源”应用的开关,取消了“允许未知来源”的检查框,如果想安装一些第三方商店的应用,则需要在每一次都手动授予“安装未知应用”的许可。
这里还有一点要注意,Fragment里动态申请权限和在Activity里申请是不一样的,这里要使用Fragment的requestPermissions方法,而不是Activity里的,不然就会出现不走授权回调的情况。那么,说了这么多,我们再授权回调里又做了什么?
很简单,拿到授权我们就去安装apk,如果没有,我们就要引导用户去开启相关的权限。
最后,就是安装了
按照这样一套流程走下走下来,我华为荣耀4C(4.4),朵唯手机(4.4),魅族(5.1),坚果pro(7.1.2),一加3(7.1.2),和三星s8(8.1)上测试都是很正常的,顺利的一套走下来。
在此记录下,希望自己成长和帮助更多的Android开发者。