检测版本更新App
This commit is contained in:
@@ -19,6 +19,7 @@ import android.view.WindowManager;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
@@ -48,8 +49,10 @@ public class DialogAppUpdate {
|
||||
public static View layoutView;
|
||||
private Dialog mDialog;
|
||||
private Activity mContext;
|
||||
private TextView tvTitle,tvContent,tvConfirm,tvCancel;
|
||||
private TextView tvTitle,tvContent,tvConfirm,tvCancel,tvVersionName;
|
||||
private TextView tvProgressPercent;
|
||||
private RelativeLayout rlUpdateContent;
|
||||
private LinearLayout llProgressContainer,llButton;
|
||||
private ImageView imgClose,imgClear;
|
||||
private String startTime = "";
|
||||
private String endTime = "";
|
||||
@@ -84,7 +87,7 @@ public class DialogAppUpdate {
|
||||
this.mContext = context;
|
||||
this.mIsForceUpdate = isForceUpdate;
|
||||
this.mVersionBean = bean;
|
||||
mDwonLoadUrl = bean.getVersionUrl();
|
||||
mDwonLoadUrl = bean.getDownloadUrl();
|
||||
mDialog = new Dialog(context, R.style.ActionSheetDialogStyle);
|
||||
//填充对话框的布局
|
||||
layoutView = LayoutInflater.from(context).inflate(layoutId, null);
|
||||
@@ -122,29 +125,28 @@ public class DialogAppUpdate {
|
||||
dialogWindow.setAttributes(lp);
|
||||
}
|
||||
tvTitle = layoutView.findViewById(R.id.tv_title);
|
||||
tvVersionName = layoutView.findViewById(R.id.tv_version);
|
||||
tvContent = layoutView.findViewById(R.id.tv_update_content);
|
||||
tvConfirm = layoutView.findViewById(R.id.tv_update);
|
||||
tvCancel = layoutView.findViewById(R.id.tv_cencel);
|
||||
tvCancel = layoutView.findViewById(R.id.tv_cancel);
|
||||
progressBar = layoutView.findViewById(R.id.progress_bar);
|
||||
rlUpdateContent = layoutView.findViewById(R.id.rel_file_content);
|
||||
llProgressContainer = layoutView.findViewById(R.id.ll_progress_container);
|
||||
llButton = layoutView.findViewById(R.id.Linear_button);
|
||||
tvConfirm.setOnClickListener(onclick);
|
||||
tvCancel.setOnClickListener(onclick);
|
||||
if(isForceUpdate){
|
||||
tvCancel.setVisibility(View.GONE);
|
||||
}
|
||||
// 初始化 DownloadManager
|
||||
downloadManager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
tvVersionName.setText(bean.getLatestVersion());
|
||||
// 解析更新说明,支持纯文本和HTML格式
|
||||
String releaseNotes = bean.getReleaseNotes();
|
||||
releaseNotes = releaseNotes.replace("\n", "<br>");
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
tvContent.setText(Html.fromHtml(bean.getVersionDescription(), Html.FROM_HTML_MODE_LEGACY));
|
||||
tvContent.setText(Html.fromHtml(releaseNotes, Html.FROM_HTML_MODE_LEGACY));
|
||||
} else {
|
||||
tvContent.setText(Html.fromHtml(releaseNotes));
|
||||
}
|
||||
String [] desStr = bean.getVersionDescription().split("#");
|
||||
String desLine = "";
|
||||
for(String str : desStr){
|
||||
desLine = desLine + str + "\n";
|
||||
}
|
||||
tvContent.setText(desLine);
|
||||
tvContent.setLineSpacing(0, 1.2f);
|
||||
}
|
||||
|
||||
@@ -165,7 +167,7 @@ public class DialogAppUpdate {
|
||||
}
|
||||
startUpdateApp();
|
||||
break;
|
||||
case R.id.tv_cencel:
|
||||
case R.id.tv_cancel:
|
||||
dismiss();
|
||||
AppConfig.USER_CONFIRM_UPDATE_APP = true;
|
||||
break;
|
||||
@@ -176,8 +178,8 @@ public class DialogAppUpdate {
|
||||
public void startUpdateApp() {
|
||||
//强制更新,不需要隐藏dialog
|
||||
if(mIsForceUpdate){
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
rlUpdateContent.setVisibility(View.GONE);
|
||||
llProgressContainer.setVisibility(View.VISIBLE);
|
||||
llButton.setVisibility(View.GONE);
|
||||
progressBar.setMax(100);
|
||||
}else{
|
||||
ToastUtil.showShort(mContext,"可在任务栏查看下载进度");
|
||||
|
||||
@@ -276,7 +276,8 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
|
||||
case 302:
|
||||
// 这是一台没有在mqtt中注册的设备,需要通过蓝牙连接配网,(可理解为新设备,走蓝牙,配网)
|
||||
// 先检查蓝牙权限和开启状态
|
||||
pendingDeviceEntity = entity;
|
||||
|
||||
|
||||
checkBluetoothAndProceed();
|
||||
break;
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.util.Map;
|
||||
public interface MainContract {
|
||||
interface DataModel{
|
||||
//新版本检测
|
||||
void checkAppVersionCode(JSONObject json, CallBack callBack);
|
||||
void checkAppVersionCode(Map<String,String> map, CallBack callBack);
|
||||
//运势
|
||||
void getYunshiData(Map<String,Object> map, CallBack callBack);
|
||||
}
|
||||
|
||||
@@ -20,13 +20,13 @@ public class MainImpl implements MainContract.DataModel{
|
||||
|
||||
/**
|
||||
* 检测新版本
|
||||
* @param jsonObject
|
||||
* @param map
|
||||
* @param callBack
|
||||
*/
|
||||
@Override
|
||||
public void checkAppVersionCode(JSONObject jsonObject, MainContract.CallBack callBack) {
|
||||
public void checkAppVersionCode(Map<String,String> map, MainContract.CallBack callBack) {
|
||||
try {
|
||||
NetWorkManager.getRequest().checkVersionCode(NetWorkManager.getToken(),NetWorkManager.toRequestBody(jsonObject))
|
||||
NetWorkManager.getRequest().checkVersionCode(NetWorkManager.getToken(),map)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.unsubscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ckkj.water.main;
|
||||
|
||||
import com.ckkj.water.BuildConfig;
|
||||
import com.ckkj.water.base.BasePresenter;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
|
||||
@@ -20,8 +21,10 @@ public class MainPresenter extends BasePresenter<MainContract.MainView> {
|
||||
* 获取用户信息
|
||||
*/
|
||||
public void checkNewVersion() {
|
||||
JSONObject json = new JSONObject();
|
||||
mainImpl.checkAppVersionCode(json, new MainContract.CallBack<CheckVersionEntity>() {
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("platform","android");
|
||||
map.put("currentVersion", BuildConfig.APP_VERSION_NAME);
|
||||
mainImpl.checkAppVersionCode(map, new MainContract.CallBack<CheckVersionEntity>() {
|
||||
@Override
|
||||
public void success(CheckVersionEntity bean) {
|
||||
if( MainPresenter.this.getView() != null){
|
||||
|
||||
@@ -103,7 +103,7 @@ public class MainActivity extends BaseActivity<MainActivityLayoutBinding, MainPr
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
// mPresenter.checkNewVersion();
|
||||
mPresenter.checkNewVersion();
|
||||
// 清空Fragment列表,避免状态恢复问题
|
||||
mFragmentList.clear();
|
||||
mFragmentList.add(new IndexFragment());
|
||||
@@ -356,16 +356,16 @@ public class MainActivity extends BaseActivity<MainActivityLayoutBinding, MainPr
|
||||
if(bean == null){
|
||||
return;
|
||||
}
|
||||
if(bean.getVersionCoercion().equals("0")){//不强制
|
||||
if(!bean.isForceUpdate()){//不强制
|
||||
isForceUpdate = false;
|
||||
}else{
|
||||
isForceUpdate = true;
|
||||
}
|
||||
//前期强制更新
|
||||
// isForceUpdate = true;
|
||||
if(bean.getVersionNumber() > versionCode){
|
||||
if(bean.getVersionCode() > versionCode){
|
||||
//App更新dialog
|
||||
mUpdateDialog = new DialogAppUpdate(mContext,R.layout.dialog_app_update,isForceUpdate,bean);
|
||||
mUpdateDialog = new DialogAppUpdate(mContext,R.layout.dialog_app_update_water,isForceUpdate,bean);
|
||||
mUpdateDialog.show();
|
||||
mUpdateDialog.setOnDialogListener(new DialogAppUpdate.DialogListener() {
|
||||
@Override
|
||||
|
||||
@@ -1,41 +1,32 @@
|
||||
package com.ckkj.water.main.entity;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class CheckVersionEntity implements Serializable {
|
||||
|
||||
|
||||
@SerializedName("versionNumber")
|
||||
private int versionNumber;
|
||||
@SerializedName("versionEnd")
|
||||
private String versionEnd;
|
||||
@SerializedName("versionCoercion")
|
||||
private String versionCoercion;
|
||||
@SerializedName("versionDescription")
|
||||
private String versionDescription;
|
||||
@SerializedName("versionName")
|
||||
private String versionName;
|
||||
@SerializedName("versionUrl")
|
||||
private String versionUrl;
|
||||
@SerializedName("versionHide1")
|
||||
private String versionHide1;
|
||||
@SerializedName("versionHide2")
|
||||
private String versionHide2;
|
||||
@SerializedName("versionHide3")
|
||||
private String versionHide3;
|
||||
@SerializedName("versionHide4")
|
||||
private String versionHide4;
|
||||
@SerializedName("versionHide5")
|
||||
private Object versionHide5;
|
||||
@SerializedName("versionHide6")
|
||||
private Object versionHide6;
|
||||
@SerializedName("paipanApiKey")
|
||||
private String paipanApiKey;
|
||||
/**
|
||||
* platform : android
|
||||
* currentVersion : 1.0.1
|
||||
* latestVersion : 1.0.0
|
||||
* versionCode : 1
|
||||
* updateAvailable : true
|
||||
* forceUpdate : false
|
||||
* downloadUrl : null
|
||||
* releaseNotes : null
|
||||
*/
|
||||
|
||||
private String platform;
|
||||
private String currentVersion;
|
||||
private String latestVersion;
|
||||
private int versionCode;
|
||||
private boolean updateAvailable;
|
||||
private boolean forceUpdate;
|
||||
private String downloadUrl;
|
||||
private String releaseNotes;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.ConstantUtil;
|
||||
import com.ckkj.water.R;
|
||||
@@ -143,6 +144,13 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
||||
}else{
|
||||
viewBinding.tvUserAccount.setText(bean.getUser().getPhonenumber());
|
||||
}
|
||||
if(!TextUtils.isEmpty(bean.getUser().getAvatar())){
|
||||
// 刷新头像显示
|
||||
Glide.with(mContext)
|
||||
.load(bean.getUser().getAvatar())
|
||||
.error(mContext.getDrawable(R.mipmap.icon_mine_user_head_defaul))
|
||||
.into(viewBinding.imgAvatar);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -140,7 +140,7 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
|
||||
@Override
|
||||
public void onConfirmClisk(String content) {
|
||||
showLoadingDialog();
|
||||
mPresenter.updateUserInfo(content);
|
||||
mPresenter.updateUserInfo(content,null);
|
||||
mUserBean.getUser().setNickName(content);
|
||||
viewBinding.tvNicknameValue.setText(content);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public class MineUserInfoBean implements Serializable {
|
||||
private String email;
|
||||
private String phonenumber;
|
||||
private String sex;
|
||||
private Object avatar;
|
||||
private String avatar;
|
||||
private String password;
|
||||
private String status;
|
||||
private String loginIp;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.ckkj.water.base.BasePresenter;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.login.mvp.LoginContract;
|
||||
@@ -51,12 +53,18 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
|
||||
|
||||
/**
|
||||
* 修改用户信息
|
||||
* @param content
|
||||
* @param nickName
|
||||
* @param avatar
|
||||
*/
|
||||
public void updateUserInfo(String content) {
|
||||
public void updateUserInfo(String nickName,String avatar) {
|
||||
try {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("nickName", content);
|
||||
if(!TextUtils.isEmpty(avatar)){
|
||||
json.put("nickName", nickName);
|
||||
}
|
||||
if(!TextUtils.isEmpty(avatar)){
|
||||
json.put("avatar", avatar);
|
||||
}
|
||||
impl.updateUserInfo(json, new MineContract.CallBack<BaseBean>() {
|
||||
@Override
|
||||
public void success(BaseBean bean) {
|
||||
@@ -142,6 +150,7 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
|
||||
public void success(MineUserInfoBean bean) {
|
||||
if (MinePresenter.this.getView() != null) {
|
||||
MinePresenter.this.getView().uploadImageSuccess(bean);
|
||||
updateUserInfo(null,bean.getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -148,8 +148,8 @@ public interface Request {
|
||||
|
||||
|
||||
|
||||
@POST("mobile/version?end=android")
|
||||
Observable<BaseBean<CheckVersionEntity>> checkVersionCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
|
||||
@GET("app/v1/checkVersion")
|
||||
Observable<BaseBean<CheckVersionEntity>> checkVersionCode(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, String> map);
|
||||
//版本检测更新
|
||||
@POST("mine/api/versionNum")
|
||||
Observable<BaseBean<CheckVersionEntity>> getVersionCheck(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
|
||||
|
||||
Reference in New Issue
Block a user