XUpdate.get()
.debug(true)
.isWifiOnly(true)//默认设置只在wifi下检查版本更新
.isGet(true)//默认设置使用get请求检查版本
.isAutoMode(false)//默认设置非自动模式,可根据具体使用配置
.param("versionCode", UpdateUtils.getVersionCode(this))//设置默认公共请求参数
.param("appKey", getPackageName())
.setOnUpdateFailureListener(new OnUpdateFailureListener() {
//设置版本更新出错的监听
@Override
public void onFailure(UpdateError error) {
}})
.supportSilentInstall(true) //设置是否支持静默安装,默认是true
.setIUpdateHttpService(new OKHttpUpdateHttpService()) //这个必须设置!实现网络请求功能。 .init(this);
implementation 'com.github.xuexiangjys:XUpdate:2.0.7'
implementation 'com.zhy:okhttputils:2.6.2'
XUpdate.newBuild(mContext)
.updateUrl("https:") //版本信息 Json
.promptThemeColor(Color.parseColor("#33B663"))
.promptButtonTextColor(Color.WHITE)
.promptTopResId(R.mipmap.ic_update) //弹窗图片 dialog根据弹窗图片大小显示
.promptWidthRatio(0.7F)
.update();
{ "Code": 0, //0代表请求成功,非0代表失败
"Msg": "", //请求出错的信息
"UpdateStatus": 1, //0代表不更新,1代表有版本更新,不需要强制升级,2代表有版本更新,需要强制升级
"VersionCode": 2, //要比Gradle里面的大
"VersionName": "1.0.2",
"ModifyContent": "1、功能修改。\r\n2、界面调整。",
"DownloadUrl": "https:", //APK存放地址
"ApkSize": 6970,
"ApkMd5": "" }
public class OKHttpUpdateHttpService implements IUpdateHttpService {
private boolean mIsPostJson;
public OKHttpUpdateHttpService() {
this(false);
}
public OKHttpUpdateHttpService(boolean isPostJson) {
mIsPostJson = isPostJson;
}
@Override
public void asyncGet(@NonNull String url, @NonNull Map<String, Object> params, final @NonNull Callback callBack) {
OkHttpUtils.get()
.url(url)
.params(transform(params))
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
callBack.onError(e);
}
@Override
public void onResponse(String response, int id) {
callBack.onSuccess(response);
}
});
}
@Override
public void asyncPost(@NonNull String url, @NonNull Map<String, Object> params, final @NonNull Callback callBack) {
//这里默认post的是Form格式,使用json格式的请修改 post -> postString
RequestCall requestCall;
if (mIsPostJson) {
requestCall = OkHttpUtils.postString()
.url(url)
.content(UpdateUtils.toJson(params))
.mediaType(MediaType.parse("application/json; charset=utf-8"))
.build();
} else {
requestCall = OkHttpUtils.post()
.url(url)
.params(transform(params))
.build();
}
requestCall
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
callBack.onError(e);
}
@Override
public void onResponse(String response, int id) {
callBack.onSuccess(response);
}
});
}
@Override
public void download(@NonNull String url, @NonNull String path, @NonNull String fileName, final @NonNull DownloadCallback callback) {
OkHttpUtils.get()
.url(url)
.tag(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(e);
}
@Override
public void onResponse(File response, int id) {
callback.onSuccess(response);
}
@Override
public void onBefore(Request request, int id) {
super.onBefore(request, id);
callback.onStart();
}
});
}
@Override
public void cancelDownload(@NonNull String url) {
OkHttpUtils.getInstance().cancelTag(url);
}
private Map<String, String> transform(Map<String, Object> params) {
Map<String, String> map = new TreeMap<>();
for (Map.Entry<String, Object> entry : params.entrySet()) {
map.put(entry.getKey(), entry.getValue().toString());
}
return map;
}
}
原版Github:github.com/xuexiangjys…