Android Demo项目我们就爱程序媛

Android 版本更新(自定义接口协议)

2017-07-04  本文已影响487人  千匍

项目地址「AppUpdateDemo

Android 版本更新

目录

功能介绍

效果图与示例 apk

点击下载 Demo.apk 或扫描下面的二维码安装

Demo apk文件二维

Gradle 依赖

dependencies {
    compile 'com.qianwen:update-app:3.2.3'
}

2, 服务器的返回json格式

1,有新版本

{
  "update": "Yes",//有新版本
  "new_version": "0.8.3",//新版本号
  "apk_file_url": "https://raw.githubusercontent.com/WVector/AppUpdateDemo/master/apk/app-debug.apk", //apk下载地址
  "update_log": "1,添加删除信用卡接口\r\n2,添加vip认证\r\n3,区分自定义消费,一个小时不限制。\r\n4,添加放弃任务接口,小时内不生成。\r\n5,消费任务手动生成。",//更新内容
  "target_size": "5M",//apk大小
  "constraint": false//是否强制更新
}

2,没有新版本

{
  "update": "No",//没有新版本
}

1,根据自己项目使用的网络框架,自己实现HttpManager接口,


    class UpdateAppHttpUtil implements HttpManager {
        /**
         * 异步get
         *
         * @param url      get请求地址
         * @param params   get参数
         * @param callBack 回调
         */
        @Override
        public void asyncGet(@NonNull String url, @NonNull Map<String, String> params, @NonNull final Callback callBack) {
            OkHttpUtils.get()
                    .url(url)
                    .params(params)
                    .build()
                    .execute(new StringCallback() {
                        @Override
                        public void onError(Call call, Response response, Exception e, int id) {
                            callBack.onError(validateError(e, response));
                        }
    
                        @Override
                        public void onResponse(String response, int id) {
                            callBack.onResponse(response);
                        }
                    });
        }
    
        /**
         * 异步post
         *
         * @param url      post请求地址
         * @param params   post请求参数
         * @param callBack 回调
         */
        @Override
        public void asyncPost(@NonNull String url, @NonNull Map<String, String> params, @NonNull final Callback callBack) {
            OkHttpUtils.post()
                    .url(url)
                    .params(params)
                    .build()
                    .execute(new StringCallback() {
                        @Override
                        public void onError(Call call, Response response, Exception e, int id) {
                            callBack.onError(validateError(e, response));
                        }
    
                        @Override
                        public void onResponse(String response, int id) {
                            callBack.onResponse(response);
                        }
                    });
    
        }
    
        /**
         * 下载
         *
         * @param url      下载地址
         * @param path     文件保存路径
         * @param fileName 文件名称
         * @param callback 回调
         */
        @Override
        public void download(@NonNull String url, @NonNull String path, @NonNull String fileName, @NonNull final FileCallback callback) {
            OkHttpUtils.get()
                    .url(url)
                    .build()
                    .execute(new FileCallBack(path, fileName) {
                        @Override
                        public void inProgress(float progress, long total, int id) {
                            super.inProgress(progress, total, id);
                            callback.onProgress(progress, total);
                        }
    
                        @Override
                        public void onError(Call call, Response response, Exception e, int id) {
                            callback.onError(validateError(e, response));
                        }
    
                        @Override
                        public void onResponse(File response, int id) {
                            callback.onResponse(response);
    
                        }
    
                        @Override
                        public void onBefore(Request request, int id) {
                            super.onBefore(request, id);
                            callback.onBefore();
                        }
                    });
    
        }
    }

3,客户端检测是否有新版本,并且更新下载


    String updateUrl = "https://raw.githubusercontent.com/WVector/AppUpdateDemo/master/json/json.txt";
    new UpdateAppManager
            .Builder()
            //当前Activity
            .setActivity(this)
            //实现httpManager接口的对象
            .setHttpManager(new UpdateAppHttpUtil())
            //更新地址
            .setUpdateUrl(updateUrl)
            .build()
            //检测是否有新版本
            .checkNewApp(new UpdateCallback() {
                /**
                 * 有新版本
                 * @param updateApp 新版本信息
                 * @param updateAppManager app更新管理器
                 */
                @Override
                public void hasNewApp(UpdateAppBean updateApp, UpdateAppManager updateAppManager) {
                    updateAppManager.showDialog();
                }
    
                /**
                 * 网络请求之前
                 */
                @Override
                public void onBefore() {
                    CProgressDialogUtils.showProgressDialog(MainActivity.this);
                }
    
                /**
                 * 网路请求之后
                 */
                @Override
                public void onAfter() {
                    CProgressDialogUtils.cancelProgressDialog(MainActivity.this);
                }
    
                /**
                 * 没有新版本
                 */
    
                @Override
                public void noNewApp() {
                    Toast.makeText(MainActivity.this, "没有新版本", Toast.LENGTH_SHORT).show();
                }
            });

                

项目地址「AppUpdateDemo

本项目进度条使用的是代码家的「NumberProgressBar

上一篇下一篇

猜你喜欢

热点阅读