android 自动更新(适配6.0-9.0)

使用GitHub开源的项目AppUpdate使用文档也写的非常清楚

1.设置Gradle 依赖

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

2.设置get方式请求服务器获取是否更新的JSON数据,返回的数据格式参加开源项目的使用文档

android 自动更新(适配6.0-9.0)_第1张图片

3.在需要app调用更新的时候引用下面代码并且更新下载

new UpdateAppManager
                .Builder()
                //当前Activity
                .setActivity(this)
                //更新地址
                .setUpdateUrl(mUpdateUrl)
                //实现httpManager接口的对象
                .setHttpManager(new UpdateAppHttpUtil())
                .build()
                .update();

4.其中需要自己实现UpdateAppHttpUtil类给类实现接口HttpManager

android 自动更新(适配6.0-9.0)_第2张图片

我的这个UpdateAppHttpUtil实现代码如下(由okhttp3实现)

(需要gradle依赖

implementation 'com.zhy:okhttputils:2.6.2'
implementation 'com.squareup.okhttp3:okhttp:3.14.2'

import android.support.annotation.NonNull;
import com.vector.update_app.HttpManager;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.FileCallBack;
import com.zhy.http.okhttp.callback.StringCallback;

import java.io.File;
import java.util.Map;


import okhttp3.Call;
import okhttp3.Request;

public class UpdateAppHttpUtil implements HttpManager {
    /**
     * 异步get
     *
     * @param url      get请求地址
     * @param params   get参数
     * @param callBack 回调
     */
    @Override
    public void asyncGet(@NonNull String url, @NonNull Map params, @NonNull final Callback callBack) {
        OkHttpUtils.get()
                .url(url)
                .params(params)
                .build()
                .execute(new StringCallback() {
                   @Override
                    public void onError(Call call, Exception e, int id) {
                        callBack.onError("回调错误");
                    }

                    @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 params, @NonNull final Callback callBack) {
        OkHttpUtils.post()
                .url(url)
                .params(params)
                .build()
                .execute(new StringCallback() {

                    @Override
                    public void onError(Call call, Exception e, int id) {
                        callBack.onError("");
                    }

                    @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) {
                        callback.onProgress(progress, total);
                    }

                    @Override
                    public void onError(Call call, Exception e, int id) {
                        callback.onError("");
                    }



                    @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();
                    }
                });
    }
}

 

其它方法的具体使用参见https://github.com/WVector/AppUpdate/blob/master/java.md

该篇文件也介绍的挺好可以参考https://www.jianshu.com/p/9bb99720b420

你可能感兴趣的:(Android)