1.lib在git上可以下载,名称updateapp;
主要实现逻辑:android版本号,后台返回的版本号,第一次网络请求返回的是json字符串,第二次请求是通过json字符串获取apk连接地址开始下载apk;
注意:权限,签名要一致;
code:
package org.fdcch.record.view.activity;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import com.google.gson.Gson;
import com.huangxudong.utils.Regex;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.vector.update_app.HttpManager;
import com.vector.update_app.UpdateAppBean;
import com.vector.update_app.UpdateAppManager;
import com.vector.update_app.UpdateCallback;
import org.fdcch.record.BuildConfig;
import org.fdcch.record.R;
import org.fdcch.record.databinding.ActivityLoginBinding;
import org.fdcch.record.model.DaoUserEntity;
import org.fdcch.record.model.UserBean;
import org.fdcch.record.model.UserLoginForm;
import org.fdcch.record.view.fragment.DialogUpdateFragment;
import org.fdcch.record.viewmodel.activity.LoginViewModel;
import org.fdcch.record.viewmodel.fragment.UpdateViewModel;
import java.io.File;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public class LoginActivity extends BaseActivity implements LoginView,View.OnTouchListener,HttpManager,DialogUpdateFragment.OnFragmentInteractionListener {
private ActivityLoginBinding mActivityLoginBinding;
private LoginViewModel mLoginViewModel;
private Regex mRegex;
private Callback mCallback;
private static final int OPEN_PERMISSON=0X008;
private Observer mObserverDown=new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object value) {
;
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
private Observer<String> mObserverUpdate=new Observer<String>(){
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String value) {
mCallback.onResponse(value);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
private Observer<Long>mObserver=new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long value) {
if (value==0){
QMUITipDialog qmuiTipDialog = showQMUITipDialog(LoginActivity.this, QMUITipDialog.Builder.ICON_TYPE_INFO, "保存用户数据失败!");
dismissQMUItipDialog(qmuiTipDialog,mActivityLoginBinding.btnLogin,2000);
}
}
@Override
public void onError(Throwable e) {
QMUITipDialog qmuiTipDialog = showQMUITipDialog(LoginActivity.this, QMUITipDialog.Builder.ICON_TYPE_INFO, "保存用户数据失败!");
dismissQMUItipDialog(qmuiTipDialog,mActivityLoginBinding.btnLogin,2000);
}
@Override
public void onComplete() {
}
};
@Override
protected void onStart() {
super.onStart();