如何简单实现安卓app自动更新功能

如何简单实现安卓app自动更新功能,第1张

app自动更新程序可以参考如下代码罩掘:

第一步 服务器端:

服务端提供一个借口,或者网址,我这里就用的服务器是tomcat,这里提供一个网址如下:

//也就是一个json数据接口

public static final String UPDATE_URL = "http://192.168.1.103:8080/update.json"

我们来看下json数据参数:

{

//app名字

appname: "爱新闻1.1",

//服务器版本

serverVersion: "2",

//服务器标志

serverFlag: "1",

//是否强制更新

lastForce: "1",

//apk下载地址,这里我已经下载了官方的apk,放到了服务器里面

updateurl: "http://192.168.1.103:8080/36Kr.apk",

//版本的更新的描述

upgradeinfo: "V1.1版本更新,你想不想要试一下哈!!!"

}

好了以上的是服务器端的信息,在这里不需要多说了,我们来看下客户端的吧。

第二步 客户端需要实现:

首先我们要去解析服务端给的json,那么我们就要来创建一个model类了(代码过多,这里只有字段,getter和setter方法自己创建):

//app名字

private String appname

//服务器版本

private String serverVersion

//服务器标志

private String serverFlag

//强制升级

private String lastForce

//app最新版本地址

private String updateurl

//升级信息

private String upgradeinfo

在这里使用了一雹闷铅个辅助类,基本和model字段差不多:

public class UpdateInformation {

public static String appname = MyApplication.getInstance()

.getResources().getString(R.string.app_name)

public static int localVersion = 1// 本地版本

public static String versionName = ""// 本地版本名

public static int serverVersion = 1// 服务器版本

public static int serverFlag = 0// 服务器标志

public static int lastForce = 0// 之前强制升级版本

public static String updateurl = ""// 升级包获取地址

public static String upgradeinfo = ""// 升级信息

public static String downloadDir = "wuyinlei"// 下载目录

}

我们知道,源好我们在进入app的时候,这个时候如果检测到服务器端有了新的版本,就回d出提示框,提示我们更新。这个我们在MainActivity里面处理逻辑(onCreate()方法里面):

OkhttpManager.getAsync(Config.UPDATE_URL, new OkhttpManager.DataCallBack() {

@Override

public void requestFailure(Request request, Exception e) {

}

@Override

public void requestSuccess(String result) {

try {

Log.d("wuyiunlei",result)

JSONObject object = new JSONObject(result)

UpdateInfoModel model = new UpdateInfoModel()

model.setAppname(object.getString("appname"))

model.setLastForce(object.getString("lastForce"))

model.setServerFlag(object.getString("serverFlag"))

model.setServerVersion(object.getString("serverVersion"))

model.setUpdateurl(object.getString("updateurl"))

model.setUpgradeinfo(object.getString("upgradeinfo"))

tmpMap.put(DeliverConsts.KEY_APP_UPDATE, model)

} catch (JSONException e) {

e.printStackTrace()

}

//发送广播

sendBroadcast(new Intent(UpdateReceiver.UPDATE_ACTION))

}

})

当然了,我们也要注册和结束广播:

/**

* 广播注册

*/

private void registerBroadcast() {

mUpdateReceiver = new UpdateReceiver(false)

mIntentFilter = new IntentFilter(UpdateReceiver.UPDATE_ACTION)

this.registerReceiver(mUpdateReceiver, mIntentFilter)

}

/**

* 广播卸载

*/

private void unRegisterBroadcast() {

try {

this.unregisterReceiver(mUpdateReceiver)

} catch (Exception e) {

e.printStackTrace()

}

}

好了,接下来我们看下我们自定义的广播接收者UpdateReceiver .java:

/**

* 版本更新升级 广播接受者

*

*/

AutoUpdate.apk是自动升级程序,用于软件自动升级,建议不要删。

SystemLog.apk是系统日志程序,主要记录系统运行和 *** 作的程序,删掉后亩春系统又会生成蠢耐扰,建议不要删。带旦


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12349254.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存