版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
首先我们先看一下整体的逻辑思路
版本检测
- 从服务器获取版本信息 ;
- 获取本地的版本信息;
- 本地与服务器的信息相比较;
更新
- 如果服务器中的版本大于本地的话那么我们就需要更新了;
- 弹框提示(根据项目需要);
- 开启线程url(服务器会反给你的)下载新的apk;
安装
- 安装这里就是有个路径问题,根据自己的项目需求就行,还
有就是大家别忘了添加一个访问内存的权限就行;
话不多说直接上代码
首先大家依赖一下: ‘com.allenliu.versionchecklib:library:2.0.5’
它里面已经写好了我们直接用就可以了,以后有更好的再给大家推荐
(用什么都是可以的 思路都是一样的)
/**
* 获取apk的版本号 currentVersionCode
*/
private void showUpdaloadDialog(final String downloadUrl) {
builder = AllenVersionChecker
.getInstance()
.requestVersion()
.setRequestUrl("")
.request(new RequestVersionListener() {
@Nullable
@Override
public UIData onRequestVersionSuccess(String result) {
// Toast.makeText(context, "request successful", Toast.LENGTH_SHORT).show();
return crateUIData(downloadUrl);
}
@Override
public void onRequestVersionFailure(String message) {
// Toast.makeText(context, "request failed", Toast.LENGTH_SHORT).show();
}
});
builder.setDirectDownload(true);
builder.setShowNotification(true);
builder.setShowDownloadingDialog(false);
builder.setShowDownloadFailDialog(false);
//自定义下载路径
builder.setDownloadAPKPath(Environment.getExternalStorageDirectory() + "/ALLEN/AllenVersionPath2/");
builder.excuteMission(context);
}
下面是弹框提示
private UIData crateUIData(String downloadUrl) {
UIData uiData = UIData.create();
uiData.setDownloadUrl(downloadUrl);
//标题
uiData.setTitle(context.getString(R.string.update_title));
内容
uiData.setContent(context.getString(R.string.updatecontent));
return uiData;
}
图文流程
到这里就结束了,如有不对的地方欢迎大家指出交流学习!