Android程序中通过PackageInstaller实现版本更新

Android更新app就不需要像iOS那样依赖于AppStore了,完全可以将 apk 安装包放在自己的服务器,每次启动app时去检查服务器的版本信息。如果高于本地版本就下载安装新版本。

版本控制

versionCode:类似iOS里的Build构建号,不对外显示,只是内部使用和应用商店更新时去修改构建号,一般每次更新版本就递增1。

versionName:类似iOS里的Version版本号,这个才是展示在应用商店和app界面上的版本号,一般我们更新版本时比较这个就行了。

请求更新版本接口后,我们可以获取到类似的返回信息,然后和本地应用版本进行比较。

php脚本

返回的json

获取本地版本号

安装APK

如果有则开启子线程去下载apk安装文件,并获取到apk文件下载后的保存路径,然后启动Android系统自带的应用 PackageInstaller 去进行安装,通过分析这个应用程序的 AndroidManifest ,我们可以使用隐式 Intent 来启动 PackageInstaller 安装apk的 activity 。

Android程序中通过PackageInstaller实现版本更新

注意我们需要使用带响应结果的启动方法:startActivityForResult(..),因为用户有可能会取消安装。

安装完毕后会自动退出应用程序,如果取消安装则进入主界面或继续使用当前版本,这样就完成了整个升级过程。

完整代码:

PHP部分

Java部分

六阿哥

目前评论:1   其中:访客  1   博主  0

  1. avatar 阿甘 0

    升级的思路是对的,一般升级会有三个状态,新增一个返回值,如updateStatus,0表示无升级、1表示正常升级、2表示强制升级(极端情况下)

评论加载中...

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: