前段时间有朋友问我版本更新的问题,所以来写一篇版本更新和APK下载并安装的博客。

版本更新,几乎在所有的项目中都用的到,一般是这样的流程,当进入APP首页是便会检测版本是否为最新版本,不是则提示你下载更新;

版本更新需要后台和移动端共同来完成,后台一般用一个接口 来返回给移动端最新版本的信息,移动端接收信息后和APP自身版本比较,如果不相同则提示用户更新 APP。

所以当移动端开发者做完并更新版本后 打包提交到后台,后台更新APP版本信息,就可以完成版本更新了。

看看我的项目的效果图:

   

首页进来开始检测  提示更新APP,点击确定,下载APK文件,之后跳转安装见面,点击安装,安装完成后,清除安装包。

获取移动端版本号

 /****
* 获取移动端版本号
* 格式可根据比较方式自己设置
*
* @param activity
* @return
*/
public static final String getVersion(Activity activity) {
try {
PackageManager manager = activity.getPackageManager();
PackageInfo info = manager.getPackageInfo(activity.getPackageName(), 0);
String version =info.versionCode+"."+info.versionName;
return version;
} catch (Exception e) {
return "";
}
}

网络请求数据解析比较,弹框提示 下载更新

 String version="服务器版本";
if (!version.equals(Util.getVersion(MainActivity.this))){
centerDialog = new CenterDialog(MainActivity.this,
R.layout.dialog_center_layout, new int[]{R.id.dialog_cancel, R.id.dialog_sure},
"服务器APK下载链接");
centerDialog.setOnCenterItemClickListener(MainActivity.this);
centerDialog.show();
}

之后就根据链接,下载APK,并安装

/****
* 服务器下载APK文件
* @param context
* @param url
*/
public static void showDownloadAPK(final Context context, final String url) {
new Thread(new Runnable() {
@Override
public void run() {
OkHttpUtils
.get()
.url(url)
.build()
.execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(),"cg.apk") {//保存路径 APK名称
@Override
public void onError(Call call, Exception e, int id) {
} @Override
public void inProgress(float progress, long total, int id) {
super.inProgress(progress, total, id);
} @Override
public void onResponse(File response, int id) {
showSelectAPK(context);
}
});
}
}).start(); }
 /***
* 调起安装APP窗口 安装APP
* @param context
*/
private static void showSelectAPK(Context context){
File fileLocation = new File(Environment.getExternalStorageDirectory(), "cg.apk");//APK名称
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(fileLocation), "application/vnd.android.package-archive");
context.startActivity(intent);
}

我的代码是写的比较简单,不过功能是可以实现的,你可以自己封装。网络请求和下载文件可用于其他方式实现,测试接口我删除了的,

有问题可以扫头像加新创建的群@我 

源码下载

Android----- 版本更新和 服务器下载新版本APK并安装的更多相关文章

  1. android sdk国内服务器下载

    推荐使用国内东软的服务器下载android sdk相关: 如果是android sdk manager: HTTP Proxy Server : mirrors.neusoft.edu.cn HTTP ...

  2. Android程序版本更新--通知栏更新下载安装(转)

    Android应用检查版本更新后,在通知栏下载,更新下载进度,下载完成自动安装,效果图如下: 检查当前版本号 AndroidManifest文件中的versionCode用来标识版本,在服务器放一个新 ...

  3. android 版本更新适配8.0,解决8.0手机无法更新自动安装apk

    随着android 7.0的普及android 8.0的也逐渐流行起来,那么google对权限方面又有了新的修改.而且我发现在android8.0中除了一些bug,比如说:在小米6(Android 8 ...

  4. Ionic4.x、Cordova Android 检测应用版本号、服务器下载文件以及实现App自动升级、安装

    Android App 升级执行流程 1.获取本地版本号 2.请求服务器获取服务器版本号 3.本地版本和服务器版本不一致提示升级,弹窗提示用户是否更新 4.用户确定升级,调用文件传输方法下载 apk ...

  5. Android和FTP服务器交互,上传下载文件(实例demo)

    今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...

  6. Android连接socket服务器上传下载多个文件

    android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { ;// 端口号,必须与客户端一致 ...

  7. [转载]Android版本更新与JSON解析

    /*  *注意,这篇文章转载自:  *http://blog.csdn.net/xjanker2/article/details/6303937  *一切权利归作者所有,这里只是转载,曾经用到过这篇文 ...

  8. Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)

    一.通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载 . (1) 调用系统的安装应用,让系统自动进行apk的安装 String fileName = "/data/ ...

  9. Genymotion - 强大好用高性能的 Android 模拟器 (在电脑流畅运行APK安卓软件游戏的利器)

    随着 Android 系统的应用和游戏越来越丰富,甚至有些比起Windows.Mac上的软件更加好用好玩,因此很多人都希望能在电脑上也能玩到安卓的游戏或APP. 我们曾推荐过 BlueStacks,而 ...

随机推荐

  1. ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制

    公司最近在做视频直播的项目,我这里分配到对直播的视频进行录制,录制的方式是通过rtmpdump对rtmp的视频流进行录制 前置的知识 ffmpeg: 用于实现把录屏工具发出的视频和音频流,转换成我们需 ...

  2. CentOS 6.4中yum安装配置LAMP服务器(Apache+MySQL+PHP5)

    准备篇: 1.配置防火墙,开启80端口.3306端口 vim  /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp ...

  3. Java 语言中 Enum 类型的使用介绍【转载】

    简介:本文主要介绍了 Java 语言中枚举类型,以及如何定制 Enum 类型的定义,如何正确使用 Enum 类型. From:http://www.ibm.com/developerworks/cn/ ...

  4. 20165324 2017-2018-2 《Java程序设计》课程总结

    20165324 2017-2018-2 <Java程序设计>课程总结 每周作业链接汇总 预备作业1:20165324 我期望的师生关系 预备作业2:20165324 学习基础与C语言学习 ...

  5. Java io流详解四

    转载地址:http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html 写在前面:本文章基本覆盖了java IO的全部内容,jav ...

  6. Java泛型三:Java泛型详解

    原文地址https://www.cnblogs.com/lzq198754/p/5780426.html 1.为什么需要泛型 泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇 ...

  7. Mac Outlook邮箱MicrosoftExchange邮箱快满了,请减小邮箱大小。

    这两天我的Mac电脑中的Exchange总是收到公司的邮箱发来的[存储空间不足的告警邮件] MicrosoftExchange329e71ec88ae4615bbc36ab6ce41109e@your ...

  8. hihocoder1477 闰秒

    地址:http://hihocoder.com/problemset/problem/1477 题目: 闰秒 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 计算机系统中 ...

  9. 关于Socket和ServerSocket类详解

    Socket类 套接字是网络连接的一个端点.套接字使得一个应用可以从网络中读取和写入数据.放在两个不同计算机上的两个应用可以通过连接发送和接受字节流.为了从你的应用发送一条信息到另一个应用,你需要知道 ...

  10. ansible一些基本操作

    一.介绍 特性 (1).no agents:不需要在被管控主机上安装任何客户端: (2).no server:无服务器端,使用时直接运行命令即可: (3).modules in any languag ...