package com.liyu.fakeweather.utils;
import android.app.Activity;
import android.content.DialogInterface;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import com.liyu.fakeweather.BuildConfig;
import com.liyu.fakeweather.http.ApiFactory;
import com.liyu.fakeweather.http.BaseAppResponse;
import com.liyu.fakeweather.model.UpdateInfo;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Created by liyu on 2016/12/29.
*/
public class UpdateUtil {
/**
* 检查更新
*
* @param activity
* @param isSilence 是否弹出Snackbar提示
*/
public static void check(final Activity activity, final boolean isSilence) {
ApiFactory.getAppController().checkUpdate().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<BaseAppResponse<UpdateInfo>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
if (!isSilence)
Snackbar.make(activity.getWindow().getDecorView().findViewById(android.R.id.content), "已是最新版本! (*^__^*)", Snackbar.LENGTH_SHORT).show();
}
@Override
public void onNext(final BaseAppResponse<UpdateInfo> response) {
if (response != null && response.results != null) {
if (response.results.getVersionCode() <= BuildConfig.VERSION_CODE) {
if (!isSilence)
Snackbar.make(activity.getWindow().getDecorView().findViewById(android.R.id.content), "已是最新版本! (*^__^*)", Snackbar.LENGTH_SHORT).show();
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setCancelable(false);
builder.setTitle("发现新版本")
.setMessage(String.format("版本号: %s\n\n更新时间: %s\n\n更新内容: %s",
response.results.getVersionName(),
response.results.getUpdateTime(),
response.results.getInformation()));
if (!response.results.isForeUpdate()) {
builder.setNegativeButton("取消", null);
}
builder.setPositiveButton("下载", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
WebUtils.openExternal(activity, response.results.getUrl());
}
});
builder.show();
}
}
});
}
}