Android版本检查更新库-AppUpdate

2019-05-16 / 5 阅读 / Android

简单好用的第三方Apk检查更新库,最近刚好做到需要检查更新的模块,不想重复造轮子,还是用现成的第三方框架来的实在。记录一下,以后直接copy使用。

因为更新界面也挺好看的,就默认使用默认UI了,以后项目中有需求再研究自定义UI。

build.gradle 配置依赖
    //检查更新
    implementation 'com.qianwen:update-app:3.5.1'
启动Activity中嵌入以下代码
new UpdateAppManager
                .Builder()
                .setActivity(getActivity())
                .setUpdateUrl("http://example/api")// 更新地址
                .setPost(true)// 使用POST
                .setTargetPath(StorageUtil.getOwnCacheDirectory(getActivity(), DIR_APK).getAbsolutePath())
                .setHttpManager(new HttpManager() { // 实现httpManager接口的对象

                    @Override
                    public void asyncGet(@NonNull String url, @NonNull Map<String, String> params, @NonNull Callback callBack) {

                    }

                    @Override
                    public void asyncPost(@NonNull String url, @NonNull Map<String, String> params, @NonNull Callback callBack) {
                        // 这边实现自己检查版本网络请求的代码
                        // 返回结果需要封装成JSON字符结果返回给框架,如下
                        Map<String, String> jsonObject = new HashMap<>();
                        jsonObject.put("update","Yes");
                        jsonObject.put("new_version","v1.0");
                        jsonObject.put("apk_file_url","http://127.0.0.1:8080/download/example.apk");
                        jsonObject.put("update_log","1,添加删除信用卡接口");
                        jsonObject.put("target_size","5M");
                        jsonObject.put("new_md5","A818AD325EACC199BC62C552A32C35F2");
                        jsonObject.put("constraint","true");// 是否强制更新
                        callBack.onResponse(MapperUtil.toJson(jsonObject));
                    }

                    @Override
                    public void download(@NonNull String url, @NonNull final String path, @NonNull final String fileName, @NonNull final FileCallback callback) {
                        callback.onBefore();// 告诉程序开始更新,显示进度条

                        // 另起线程模拟下载进度,
                        new Thread() {
                            @Override
                            public void run() {
                                for (int i = 1; i < 10; i++) {
                                    final float v = i * 1f / 10;
                                    handler.post(new Runnable() {
                                        @Override
                                        public void run() {
                                            callback.onProgress(v, 10);
                                        }
                                    });
                                    try {
                                        Thread.sleep(1000);
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                }
                                handler.post(new Runnable() {
                                    @Override
                                    public void run() {
                                        // 完成后回调,进入安装界面
                                        callback.onResponse(new File(path, fileName));
                                    }
                                });
                            }
                        }.start();
                    }
                })
                .build().update();
相关推荐