推荐第三种方式,简单快捷不卡。
GitHub地址:jjdxmashl/jjdxm_update
效果图:
点击立即更新,程序会在后台下载,通知栏有下载进度。这个时候手机系统很卡,可能由于是下载应用的原因吧。下载完成后弹出安装界面
<强>简介:强>
这是大神jjdxmashl的开源项目,下载地址见上方。有版本更新,手动更新,静默更新,自动更新4种情况。应用内更新,实现类是友盟自动更新sdk的模式,用户使用前只需要配置自己的服务器更新检查接口即可(必须接口),也可以扩展加入一个接口作为在线参数配置来实现,可以实现下面的4种2更新方式和是否强制更新组合使用,支持,发布方式请求网络,默认是得到请求。
4种更新检查类型
-
<李>手动更新:手动检测更新(所有网络类型环境检测并提示主要用于点击检测使用)李>
<李>自动更新:自动检测更新(所有网络类型环境检测并提示)李>
<李>仅WiFi自动检测更新(只有WiFi网络类型环境检测并提示)李>
<李>静默更新:仅WiFi自动检测下载(只有WiFi网络类型环境检测,下载完才提示)
李>
2种强制更新方式
-
<李>在更新检查返回后,直接设置update.setForce(真正的)李>
<李>配合在线参数使用,通过在线参数返回的数据设置UpdateHelper.getInstance () .setForced(真正的)李>
上述4中更新检查结合2种强制更新,适用于:上一个应用版本有重大漏洞、修改在线参数统一控制所有的应用用户,不更新就不可以使用应用。
主要原理:服务器上修改参数值,应用端获取后进行判断,如果是强制更新,则在打开应用时就提示有新版本的应用,更新完成后才可以使用该应用;更新为完成,则提示框不消失,点击回键则退出应用。
<强>强制更新的使用强>
下面演示的是强制更新的情况,
步骤1:添加依赖库
在主程序的构建。gradle文件的依赖关系属性中添加依赖库
依赖关系{ … 编译“com.dou361.update: jjdxm-update: 1.0.5” 编译的com.dou361.download: jjdxm-download: 1.0.3 … }
步骤2:配置更新接口参数信息,初始化参数接口和解析参数
必须配置的是在线更新接口和该接口返回数据的解析
可选的是在线参数接口和该接口返回数据的解析(一般用不到),在线参数可以随机定义零个或多个不同意义的参数来达到在线修改apk的部分特性。
Step2-1创建一个自动更新的配置类
方法+参数 含义 setCheckUrl (checkUrl) checkUrl:更新应用的接口 setCheckJsonParser(新ParseData(){返回更新;} 只能返回更新类型,解析可以随便解析,但要把解析到的数据赋值给更新,再把更新返回
公开课UpdateConfig { 私有静态最终字符串标签=癠pdateConfig”; 私有静态字符串checkUrl=" http://192.168.1.11:8080/中/jsoninfo”; 公共静态孔隙init(上下文语境){ UpdateHelper.init(上下文); UpdateHelper.getInstance () .setMethod (RequestType.get)//可填:请求方式,默认为得到请求 .setCheckUrl (checkUrl)//必填:数据更新接口,方法有重载带参数的setCheckUrl (checkUrl params) .setDialogLayout (R.layout.custom_update_dialog)//自定义的更新对话框 .setCheckJsonParser(新ParseData(){//必填:用于从数据更新接口获取的数据响应中。解析出更新实例。以便框架内部处理 @Override 公共更新parse (String响应){ 日志。d(标签,“响应=" +响应);//解析json数据 Gson Gson=new Gson (); UpDateBean UpDateBean=gson.fromJson(响应,UpDateBean.class); UpDateBean。DataBean data=https://www.yisu.com/zixun/upDateBean.getData (); 更新更新=new Update (); update.setForce (data.isForce ()); update.setApkSize (data.getV_size ()); update.setUpdateContent (data.getUpdate_content ()); update.setUpdateUrl (data.getDownload_url ()); update.setVersionCode (Integer.parseInt (data.getV_code ())); update.setVersionName (data.getV_name ()); 返回更新;//只能返回更新类型,否则报错,所以我们要把解析的javaBean数据赋值给更新,然后将更新返回 } }); } }android中强制更新应用实例代码