Android App应用程序实现自动更新

来源:互联网 发布:知乎 宋茜 编辑:程序博客网 时间:2024/05/18 09:11

1. 初衷:
Android App 需要不断更新迭代。当新版本发布以后,如果客户下载了或者仍然在使用老版本的App,这个时候就应该提醒客户升级App,以便提供给客户更加完善的功能等,提升用户体验满意度。
2. 逻辑:
  • 当客户进入Splash界面的时候,获取本地客户端的版本号。
  • 获取服务器端版本号,两者做比较,如果本地客户端=服务器端版本号,直接进入主页面或者引导页面;如果本地客户端小于服务器端版本号(前者不会大于后者,做判断的时候只需要判断是否相等即可),则提示用户升级。
  • 客户选择升级,下载Apk。下载完成以后,则替换安装即可。
3. 配置服务器端:
  • 创建名为updateinfo.json的文件,放置在Tomcat服务器webapps\ROOT下,内容如下:
说明:version是服务器的版本,description:更新对话框中显示的内容(优点:在服务器端可动态设置),downloadpath:apk的存放地址。
  • 放置版本为1.0.1的xxx.apk在webapps\ROOT下(位置和updateinfo.json里面的下载地址一致)
  • 项目value文件夹下创建config.xml文件,内容如下:
说明:这个url存放的是updateinfo.json的ip地址,优点就是可以动态设置。
4. 配置OkHttputils
  • 添加依赖:
  • 初始化(Application中,别忘记注册文件里面配置下):
5. 实现自动更新逻辑:
  • 准备用来读取流的工具类StreamTools
  • 准备获取本地版本的工具类PackageInfoUtils
  • 创建两个活动(Activity),MainActivitySplashActivity,创建各自布局并初始化,并且把本地版本号打印在Splash页面:
MainActivity(主页面布局和初始化如下):
activity_main.xml:
MainActivity:
SplashActivity(布局和初始化如下):
activity_splash.xml
MainActivity(初始化+显示本地版本号到页面上):

  • 开启子线程,获取服务器端版本号并比较,版本号一致,直接进入程序主页面,不一致,提示用户升级:

  • 弹出用户升级对话框,如果选择立刻升级则下载并替换安装,如果选择下次再说,直接跳转到主页面
6. 总结:
此次SDK版本是25,编译工具版本25.0.1;通过以上操作,逻辑+代码可以实现App自动更新的操作,如果哪里有疑问或者有其他意见和建议,都可以写在评论里面,我每一条都会认真看认真回复;觉得还可以的,还望收藏点赞,我会继续努力;元旦之际,祝各位新年快乐,万事如意。
7.demo下载地址:
链接: https://pan.baidu.com/s/1qXWpNkw 密码: nwp2

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红米3x开不了机怎么办 苹果手机忘记了锁屏密码怎么办 小米5的4g网速慢怎么办 红米4a卡机了怎么办 信而富逾期3个月怎么办 苹果6锁屏密码忘了怎么办 孕8个月咳嗽有痰怎么办 微信红包输了6万怎么办 红米3s开不了机怎么办 核载5人载了6人怎么办 我欠支付宝2万6怎么办 我47岁这个月经不来怎么办 两个月不来月经了也没怀孕怎么办 婴儿不吃奶粉母乳又不够吃怎么办 怀孕39周了还没反应怎么办 脸过敏了又红又痒怎么办 刚开的淘宝店没生意怎么办 我22岁长得显老怎么办 卡的钱被qq转走怎么办 招行u盾密码忘了怎么办 孩子上五年级了成绩非常差怎么办 红米3s开不开机怎么办 皮肤被虫子咬了红肿痒怎么办 微信被骗了1万多怎么办 6个月宝宝吃了纸怎么办 农行k宝扣了50块怎么办 4g流量用的太快怎么办 怀疑老公有外遇最明智的怎么办 咽喉疼怎么办最简单的方法如下 生完孩子后腰疼的厉害怎么办 眼睛进东西了弄不出来怎么办 18k金不给换黄金怎么办 我22岁欠了10万怎么办 1岁宝宝又吐又拉怎么办 月经10天了还没干净怎么办 舌头有异味怎么办是有口臭吗 快8个月羊水破了怎么办 25岁欠了50万债怎么办 28岁血压高150低压110怎么办 苹果6的4g网络慢怎么办 一个月染了6次头怎么办