Commit 61142e3b authored by 小费同学阿's avatar 小费同学阿 💬

强制更新优化主页版本检测

parent c3cf7fd2
......@@ -62,7 +62,7 @@ public class HomeFragment extends BaseFragment<FragmentHomeBinding, HomeViewMode
/*检查版本*/
viewModel.checkVersion(binding.getRoot().getRootView());
// 安装新版本
// 安装新版本
viewModel.openInstall.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
......
......@@ -53,7 +53,7 @@ import okhttp3.ResponseBody;
public class MineViewModel extends BaseViewModel<MineRequest> {
RxPermissions rxPermissions;
RxPermissions rxPermissions;
//头像的绑定
private MutableLiveData<String> avatarImageUrl = new MutableLiveData<>();
......@@ -68,22 +68,23 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
public ObservableField<String> versionName = new ObservableField<>("");
public MutableLiveData<String> openInstall=new MutableLiveData<>("");
public MutableLiveData<String> openInstall = new MutableLiveData<>("");
public MineViewModel(@NonNull Application application) {
super(application);
model=new MineRequest();
model = new MineRequest();
}
private void setValueToNickName() {
nickName.set(LocalData.getUser().getNickName());
createTime.set("创建日期:"+ CommUtilsKt.getTimeForm(LocalData.getUser().getCreateTime()));
createTime.set("创建日期:" + CommUtilsKt.getTimeForm(LocalData.getUser().getCreateTime()));
roleName.set(LocalData.getUser().getUserId()==LocalData.getMerchant().getUserId()? "店长" :"店员");
roleName.set(LocalData.getUser().getUserId() == LocalData.getMerchant().getUserId() ? "店长" : "店员");
avatarImageUrl.setValue(LocalData.getUser().getAvatar());
}
//跳转注销账号界面
public BindingCommand goLogOffUser = new BindingCommand(new BindingAction() {
@Override
......@@ -98,9 +99,11 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
public LiveData<String> getAvatarImageUrl() {
return avatarImageUrl;
}
public void refreshNickName() {
setValueToNickName();
}
//跳转修改密码界面
public BindingCommand goChangePwd = new BindingCommand(new BindingAction() {
@Override
......@@ -138,13 +141,12 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
}
});
public void goUserinfo(View view )
{
public void goUserinfo(View view) {
startActivity(UserInfoActivity.class);
}
public void clearCookie(View view)
{
PersistentCookieStore p=new PersistentCookieStore(view.getContext());
public void clearCookie(View view) {
PersistentCookieStore p = new PersistentCookieStore(view.getContext());
p.removeAllCookie();
ToastUtils.showShort("清除缓存成功");
}
......@@ -152,30 +154,28 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
/**
* 获取最新APK版本号
*
* @param view
*/
public void checkVersion(View view)
{
public void checkVersion(View view) {
model.checkVersion().compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(MineViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<VersionBean>() {
.doOnSubscribe(MineViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<VersionBean>() {
@Override
public void onSuccess(VersionBean resultBean) {
if (CommUtilsKt.checkVersionUpdata(CommUtilsKt.getVersion(view.getContext()),resultBean.getAppVersion()))
{
if (CommUtilsKt.checkVersionUpdata(CommUtilsKt.getVersion(view.getContext()), resultBean.getAppVersion())) {
//不强制
if (resultBean.getPushFlag().equals("0"))
{
showCommTextDialog(new RefuseDialogBean("是否前往更新", "确定", "取消","更新提示"), new CommTextDialog.onAcceptCallBack() {
if (resultBean.getPushFlag().equals("0")) {
showCommTextDialog(new RefuseDialogBean("是否前往更新", "确定", "取消", "更新提示"), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
......@@ -208,11 +208,11 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
}
});
}else{
showCommTextDialog(new RefuseDialogBean("请前往更新", "确定",null), new CommTextDialog.onAcceptCallBack() {
} else {
showCommTextDialog(new RefuseDialogBean("请前往更新", "确定", null), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
finish();
}
@Override
......@@ -243,7 +243,7 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
});
}
}else {
} else {
ToastUtils.showShort("版本已是最新!");
}
......@@ -260,17 +260,17 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
/**
* 下载APK
*
* @param context
* @param url 下载地址
* @param name 文件名字
* @param url  下载地址
* @param name  文件名字
*/
public void updataApk(Context context,String url,String name)
{
public void updataApk(Context context, String url, String name) {
showDialog();
model.downFile(url,name).subscribe(new Observer<ResponseBody>() {
model.downFile(url, name).subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
Log.e("下载","onSubscribe");
Log.e("下载", "onSubscribe");
}
@Override
......@@ -286,10 +286,10 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
@Override
public void onComplete() {
Log.e("下载","onComplete");
Log.e("下载", "onComplete");
dismissDialog();
ToastUtils.showShort("下载成功");
installApk(context,name);
installApk(context, name);
}
});
}
......@@ -309,11 +309,9 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
context.startActivity(intent);
}
public void goProtocol(View view)
{
if (StaticData.Protocols.size()>=3)
{
Bundle bundle= new Bundle();
public void goProtocol(View view) {
if (StaticData.Protocols.size() >= 3) {
Bundle bundle = new Bundle();
bundle.putString("title", "隐私条款");
bundle.putString("URL", RetrofitClient.baseH5Url + StaticData.Protocols.get(2));
startActivity(CommWabActivity.class, bundle);
......
......@@ -8,6 +8,8 @@ import com.xx.hbhbcompany.data.http.respons.ConsultationInformationBean;
import com.xx.hbhbcompany.data.http.respons.ConsultationTitleBean;
import com.xx.hbhbcompany.data.http.respons.JobInformationBean;
import com.xx.hbhbcompany.data.http.respons.MessageBean;
import com.xx.xxviewlibrary.model.VersionBean;
import com.xx.xxviewlibrary.model.VersionBody;
import java.util.List;
......@@ -18,9 +20,20 @@ import me.goldze.mvvmhabit.http.BaseResponse;
import okhttp3.RequestBody;
public class HomeRequest extends BaseRespons {
/** * 获取消息列表 */
public Observable<BasePageResponse<MessageBean>> getMessageList(String flag,Integer page) {
return getApiService().getMessageList(flag,page);
/**
* 获取消息列表
*/
public Observable<BasePageResponse<MessageBean>> getMessageList(String flag, Integer page) {
return getApiService().getMessageList(flag, page);
}
/**
* 强制更新
*/
public Observable<BaseResponse<VersionBean>> checkVersion() {
return getApiService().getLineVersion(new ApiParams<VersionBody>().setParams(
new VersionBody("1", "2")
));
}
/**
......@@ -31,20 +44,20 @@ public class HomeRequest extends BaseRespons {
ApiParams<HomeRequestBody> apiParams = new ApiParams<HomeRequestBody>();
HomeRequestBody requestBody = new HomeRequestBody("2");
RequestBody body = apiParams.setParams(requestBody);
return getApiService().getActivityList(body,page);
return getApiService().getActivityList(body, page);
}
/**
* 招聘列表
*/
public Observable<BasePageResponse<JobInformationBean>> getJobInformationList(String recruitment)
{
public Observable<BasePageResponse<JobInformationBean>> getJobInformationList(String recruitment) {
ApiParams<JobRequestBody> apiParams = new ApiParams<JobRequestBody>();
JobRequestBody requestBody = new JobRequestBody(recruitment);
RequestBody body = apiParams.setParams(requestBody);
return getApiService().getJobInformationList(body,1);
return getApiService().getJobInformationList(body, 1);
}
/**
* 资讯列表
*/
......@@ -62,8 +75,8 @@ public class HomeRequest extends BaseRespons {
*/
public Observable<BaseResponse<List<AdvertisingBean>>> getAdList() {
ApiParams<AdvertisingRequestBody> apiParams = new ApiParams<AdvertisingRequestBody>();
AdvertisingRequestBody requestBody = new AdvertisingRequestBody("1","3");
RequestBody body=apiParams.setParams(requestBody);
AdvertisingRequestBody requestBody = new AdvertisingRequestBody("1", "3");
RequestBody body = apiParams.setParams(requestBody);
return getApiService().getADList(body);
}
......@@ -84,10 +97,12 @@ public class HomeRequest extends BaseRespons {
*/
public class ConsultationRequestBody {
public String appSide;
public ConsultationRequestBody(String appSide) {
this.appSide = appSide;
}
}
/**
* 不需要传参
*/
......@@ -100,6 +115,7 @@ public class HomeRequest extends BaseRespons {
this.recruitmentType = recruitmentType;
}
}
/**
* 获取广告列表
* affiliatedCompany string 所属公司 1- 河西 2-滨海
......@@ -109,7 +125,7 @@ public class HomeRequest extends BaseRespons {
public String affiliatedCompany;
public String rotographDisplay;
public AdvertisingRequestBody(String affiliatedCompany,String rotographDisplay) {
public AdvertisingRequestBody(String affiliatedCompany, String rotographDisplay) {
this.affiliatedCompany = affiliatedCompany;
this.rotographDisplay = rotographDisplay;
}
......@@ -118,6 +134,7 @@ public class HomeRequest extends BaseRespons {
/**
* 添加浏览数
*
* @param id 咨询id
* @return
*/
......@@ -125,6 +142,6 @@ public class HomeRequest extends BaseRespons {
ApiParams<PointOrderDetailRequest.ConfirmReceiptRequestBody> apiParams = new ApiParams<PointOrderDetailRequest.ConfirmReceiptRequestBody>();
return getApiService().addLook(apiParams.setParams(new PointOrderDetailRequest.ConfirmReceiptRequestBody(id,null)));
return getApiService().addLook(apiParams.setParams(new PointOrderDetailRequest.ConfirmReceiptRequestBody(id, null)));
}
}
......@@ -6,6 +6,8 @@ import com.xx.hbhbcompany.data.http.respons.UserBean
import com.xx.hbhbcompany.data.http.respons.WorkBean
import com.xx.hbhbcompany.data.local.LocalData
import com.xx.hbhbcompany.data.staticdata.StaticData
import com.xx.xxviewlibrary.model.VersionBean
import com.xx.xxviewlibrary.model.VersionBody
import io.reactivex.rxjava3.core.Observable
import me.goldze.mvvmhabit.http.ApiParams
import me.goldze.mvvmhabit.http.BasePageResponse
......@@ -14,7 +16,16 @@ import me.goldze.mvvmhabit.http.BaseResponse
class WorkRequest : BaseRespons() {
var user: UserBean = LocalData.getUser();
/**
* 强制更新
*/
fun checkVersion(): Observable<BaseResponse<VersionBean>> {
return apiService.getLineVersion(
ApiParams<VersionBody>().setParams(
VersionBody("1", "2")
)
)
}
fun getMerchantAuditList(
static: String,
pageNum: Int
......
......@@ -6,7 +6,11 @@ import static me.goldze.mvvmhabit.utils.Utils.Interceptor_TOKEN;
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -48,6 +52,34 @@ import me.tatarka.bindingcollectionadapter2.BR;
public class HomeFragment extends BaseFragment<FragmentHomeBinding, HomeViewModel> {
@Override
public void onResume() {
super.onResume();
// 检查版本
viewModel.rxPermissions = new RxPermissions(this);
/*检查版本*/
viewModel.checkVersion(binding.getRoot().getRootView());
// 安装新版本
viewModel.openInstall.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
if ("1".equals(s)) {
Uri packageURI = Uri.parse("package:" +getContext().getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, 1002);
}
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!Environment.isExternalStorageManager()) {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.setData(Uri.parse("package:" + getContext().getPackageName()));
startActivityForResult(intent, 1024);
}
}
}
// 重写初始方法调用参数
@Override
public void initData() {
......
......@@ -2,11 +2,16 @@ package com.xx.hbhbcompany.ui.home;
import android.Manifest;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.core.content.FileProvider;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
......@@ -27,13 +32,20 @@ import com.xx.hbhbcompany.ui.activities.ActivitiesActivity;
import com.xx.hbhbcompany.ui.appeal.AppealDetailManageActivity;
import com.xx.hbhbcompany.ui.consult.ConsultationActivity;
import com.xx.hbhbcompany.ui.consult.ConsultationViewModel;
import com.xx.hbhbcompany.ui.mine.MineViewModel;
import com.xx.hbhbcompany.ui.msg.MessageActivity;
import com.xx.hbhbcompany.ui.recruitment.RecruitmentActivity;
import com.xx.hbhbcompany.ui.scan.ScanActivity;
import com.xx.xxviewlibrary.comm.CommTextDialog;
import com.xx.xxviewlibrary.comm.RefuseDialogBean;
import com.xx.xxviewlibrary.model.VersionBean;
import com.xx.xxviewlibrary.utils.CommUtilsKt;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
......@@ -42,8 +54,12 @@ import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.http.ApiDisposablePageObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
import okhttp3.ResponseBody;
public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
RxPermissions rxPermissions;
public MutableLiveData<String> openInstall = new MutableLiveData<>("");
/*首页-资讯信息列表*/
//获取适配器上下文
ConsultationInformationAdapter consultationInformationAdapter;
......@@ -62,13 +78,14 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
// 创建招聘标题实体对象
public List<JobTitleBean> jobTitleBeanList = new ArrayList<>();
public ObservableField<Integer> zx=new ObservableField<>(View.GONE);
public ObservableField<Integer> zx = new ObservableField<>(View.GONE);
/*广告列表暂无数据状态位*/
public MutableLiveData<Integer> loadMoreStatics = new MutableLiveData<>(0);
/*资讯列表暂无数据状态位*/
public MutableLiveData<Integer> loadMoreStatich = new MutableLiveData<>(0);
/*招聘列表暂无数据状态位*/
public MutableLiveData<Integer> loadMoreStatica = new MutableLiveData<>(0);
public HomeViewModel(@NonNull Application application) {
super(application);
}
......@@ -76,12 +93,157 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
public HomeViewModel(@NonNull Application application, HomeRequest model) {
super(application, model);
}
/*设置消息初始状态是0*/
public String flag = "0";
public Integer page = 1;
/**
* 获取最新APK版本号
*
* @param view
*/
public void checkVersion(View view) {
model.checkVersion().compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(HomeViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<VersionBean>() {
@Override
public void onSuccess(VersionBean resultBean) {
if (CommUtilsKt.checkVersionUpdata(CommUtilsKt.getVersion(view.getContext()), resultBean.getAppVersion())) {
//不强制
if (resultBean.getPushFlag().equals("0")) {
showCommTextDialog(new RefuseDialogBean("是否前往更新", "确定", "取消", "更新提示"), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
}
@Override
public void acceptBack() {
rxPermissions
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(granted -> {
if (granted) { // Always true pre-M
/* rxPermissions
.request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
.subscribe(granteds -> {
if (granteds) { // Always true pre-M
} else {
ToastUtils.showShort("请允许安装外部来源应用");
openInstall.postValue("1");
}
});*/
updataApk(view.getContext(), resultBean.getVersionFile(), view.getContext().getFilesDir().getPath() + resultBean.getVersionFile().substring(
resultBean.getVersionFile().lastIndexOf("/")));
} else {
ToastUtils.showShort("请开启文件相关权限");
}
});
}
});
} else {
showCommTextDialog(new RefuseDialogBean("请前往更新", "确定", null), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
finish();
}
@Override
public void acceptBack() {
rxPermissions
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(granted -> {
if (granted) { // Always true pre-M
updataApk(view.getContext(), resultBean.getVersionFile(), view.getContext().getFilesDir().getPath() + resultBean.getVersionFile().substring(
resultBean.getVersionFile().lastIndexOf("/")));
} else {
ToastUtils.showShort("请开启文件相关权限");
}
});
}
});
}
} else {
ToastUtils.showShort("版本已是最新!");
}
}
@Override
public void onError(String Error) {
}
});
}
/**
* 下载APK
*
* @param context
* @param url  下载地址
* @param name  文件名字
*/
public void updataApk(Context context, String url, String name) {
showDialog();
model.downFile(url, name).subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
Log.e("下载", "onSubscribe");
}
@Override
public void onNext(@io.reactivex.rxjava3.annotations.NonNull ResponseBody responseBody) {
}
@Override
public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) {
ToastUtils.showShort("下载失败");
dismissDialog();
}
@Override
public void onComplete() {
Log.e("下载", "onComplete");
dismissDialog();
ToastUtils.showShort("下载成功");
installApk(context, name);
}
});
}
//跳转安装APP
private void installApk(Context context, String path) {
Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File(Uri.parse(path).getPath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uri = FileProvider.getUriForFile(context, "com.xx.hbhbcompany.fileProvider", file);
intent.setDataAndType(uri, "application/vnd.android.package-archive");
} else {
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Adding the flag here
context.startActivity(intent);
}
//调用消息列表的接口信息
public void getMessageList() {
model.getMessageList(flag,page)
model.getMessageList(flag, page)
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(HomeViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
......@@ -101,17 +263,17 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
@Override
public void getTotal(int total) {
if (total!=0)
{
if (total != 0) {
/*有未读消息,标志位就是0*/
StaticData.messageData=0;
}else {
StaticData.messageData = 0;
} else {
/*无未读消息,标志位是1*/
StaticData.messageData=1;
StaticData.messageData = 1;
}
}
});
}
//招聘标题赋值
public void getJobTitle() {
jobTitleBeanList.add(new JobTitleBean("企业招聘"));
......@@ -130,7 +292,7 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
}).subscribe(new ApiDisposableObserver<List<AdvertisingBean>>() {
@Override
public void onSuccess(List<AdvertisingBean> resultBean) {
AdvertisingList.postValue(resultBean);
AdvertisingList.postValue(resultBean);
}
@Override
......@@ -144,12 +306,12 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
/*跳转诉求详情*/
public void goDetail(View view){
public void goDetail(View view) {
/*创建bundle*/
Bundle bundle = new Bundle();
/*将要传的businessId传过去*/
/*死值临时使用*/
bundle.putString("businessId","8dde3eeb5390794c60bcebd960c1b976");
bundle.putString("businessId", "8dde3eeb5390794c60bcebd960c1b976");
/*连带参数一块跳转到详情页*/
startActivity(AppealDetailManageActivity.class, bundle);
}
......@@ -171,7 +333,7 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
if (resultBean != null && resultBean.size() > 0) {
ActivityCenterList.postValue(resultBean);
loadMoreStatics.postValue(1);
}else {
} else {
loadMoreStatics.postValue(0);
}
......@@ -215,7 +377,7 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
public void getTotal(int total) {
if (total == 0) {
loadMoreStatica.postValue(0);
}else {
} else {
loadMoreStatica.postValue(1);
}
}
......@@ -236,16 +398,15 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
}).subscribe(new ApiDisposableObserver<List<ConsultationTitleBean>>() {
@Override
public void onSuccess(List<ConsultationTitleBean> resultBean) {
if (resultBean.size()>0)
{
if (resultBean.size() > 0) {
consultationInformationTitleAdapter.mList=resultBean;
consultationInformationTitleAdapter.select=resultBean.get(0).getClassificationId();
consultationInformationTitleAdapter.mList = resultBean;
consultationInformationTitleAdapter.select = resultBean.get(0).getClassificationId();
consultationInformationTitleAdapter.notifyDataSetChanged();
consultationInformationAdapter.mList=resultBean.get(0).getChildren();
consultationInformationAdapter.mList = resultBean.get(0).getChildren();
consultationInformationAdapter.notifyDataSetChanged();
loadMoreStatich.postValue(1);
}else {
} else {
loadMoreStatich.postValue(0);
}
}
......@@ -295,10 +456,10 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
/**
* 增加PDF咨询浏览量
*
* @param id
*/
public void addLook(String id)
{
public void addLook(String id) {
model.addLook(id).compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(HomeViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
......@@ -319,5 +480,4 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
}
}
......@@ -56,13 +56,13 @@ class LoginActivity() : BaseActivity<ActivityLoginBinding, LoginViewModel>() {
// 使用SharedPreferences检查是否是第一次打开应用
val preferences = getPreferences(Context.MODE_PRIVATE)
val isAgreeFlag = preferences.getBoolean("is_agree_flag", true)
if (isAgreeFlag) {
/* if (isAgreeFlag) {
// 如果是第一次打开应用,执行相应的操作
// ToastUtils.showShort("第一次登录")
viewModel.agreeContent.observe(this) { agreeContent: String? ->
if (agreeContent != null) {
agreementContext = agreeContent
/*在这里加上隐私协议弹窗*/
*//*在这里加上隐私协议弹窗*//*
showCommTextAgreeDialog(
RefuseDialogBean(agreementContext, "同意", "不同意", "隐私条款"),
object : CommTextDialog.onAcceptCallBack, CommTextAgreeDialog.onAcceptCallBack {
......@@ -86,7 +86,7 @@ class LoginActivity() : BaseActivity<ActivityLoginBinding, LoginViewModel>() {
}
}else{
viewModel.checkVersion(binding.root.rootView)
}
}*/
/*强制更新标识位变更--重置用户登录*/
StaticData.updateLogin = 1
// 安装新版本
......
......@@ -4,7 +4,9 @@ import static com.xx.hbhbcompany.utils.RetrofitClient.baseImgUrl;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
......@@ -30,6 +32,7 @@ import me.goldze.mvvmhabit.base.BaseFragment;
import me.goldze.mvvmhabit.utils.StringUtils;
public class MineFragment extends BaseFragment<FragmentMineBinding, MineViewModel> {
@Override
public int viewModelType() {
return 0;
......@@ -100,7 +103,28 @@ public class MineFragment extends BaseFragment<FragmentMineBinding, MineViewMode
@Override
public void onResume() {
super.onResume();
viewModel.refreshNickName();
}
// 检查版本
viewModel.rxPermissions = new RxPermissions(this);
/*检查版本*/
viewModel.checkVersion(binding.getRoot().getRootView());
// 安装新版本
viewModel.openInstall.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
if ("1".equals(s)) {
Uri packageURI = Uri.parse("package:" +getContext().getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, 1002);
}
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!Environment.isExternalStorageManager()) {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.setData(Uri.parse("package:" + getContext().getPackageName()));
startActivityForResult(intent, 1024);
}
}
}
}
......@@ -51,7 +51,7 @@ import okhttp3.ResponseBody;
public class MineViewModel extends BaseViewModel<MineRequest> {
RxPermissions rxPermissions;
public MutableLiveData<String> openInstall = new MutableLiveData<>("");
//头像的绑定
private MutableLiveData<String> avatarImageUrl = new MutableLiveData<>();
//昵称的绑定
......@@ -61,14 +61,14 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
//职位的绑定
public ObservableField<String> roleName = new ObservableField<>("");
public MutableLiveData<String> openInstall=new MutableLiveData<>("");
//版本号
public ObservableField<String> versionName = new ObservableField<>("");
public MineViewModel(@NonNull Application application) {
super(application);
}
public MineViewModel(@NonNull Application application, MineRequest model) {
super(application, model);
}
......@@ -78,11 +78,12 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
deptName.set(LocalData.getUser().getDept().getDeptName());
roleName.set(LocalData.getUser().getRoles().get(0).getRoleName());
avatarImageUrl.setValue(LocalData.getUser().getAvatar());
}
}
public void refreshNickName() {
setValueToNickName();
}
/*头像回显*/
public LiveData<String> getAvatarImageUrl() {
return avatarImageUrl;
......@@ -124,8 +125,7 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
});
public void exitLogin(View view)
{
public void exitLogin(View view) {
showCommTextDialog(new RefuseDialogBean("是否确定退出?", "确定", "取消"), new CommTextDialog.onAcceptCallBack() {
@Override
......@@ -142,9 +142,8 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
}
public void clearCookie(View view)
{
PersistentCookieStore p=new PersistentCookieStore(view.getContext());
public void clearCookie(View view) {
PersistentCookieStore p = new PersistentCookieStore(view.getContext());
p.removeAllCookie();
ToastUtils.showShort("清除缓存成功");
}
......@@ -152,10 +151,10 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
/**
* 获取最新APK版本号
*
* @param view
*/
public void checkVersion(View view)
{
public void checkVersion(View view) {
model.checkVersion().compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(MineViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
......@@ -166,12 +165,10 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
@Override
public void onSuccess(VersionBean resultBean) {
if (CommUtilsKt.checkVersionUpdata(CommUtilsKt.getVersion(view.getContext()),resultBean.getAppVersion()))
{
if (CommUtilsKt.checkVersionUpdata(CommUtilsKt.getVersion(view.getContext()), resultBean.getAppVersion())) {
//不强制
if (resultBean.getPushFlag().equals("0"))
{
showCommTextDialog(new RefuseDialogBean("是否前往更新", "确定", "取消","更新提示"), new CommTextDialog.onAcceptCallBack() {
if (resultBean.getPushFlag().equals("0")) {
showCommTextDialog(new RefuseDialogBean("是否前往更新", "确定", "取消", "更新提示"), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
......@@ -205,11 +202,11 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
}
});
}else{
showCommTextDialog(new RefuseDialogBean("请前往更新", "确定",null), new CommTextDialog.onAcceptCallBack() {
} else {
showCommTextDialog(new RefuseDialogBean("请前往更新", "确定", null), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
finish();
}
@Override
......@@ -231,7 +228,7 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
});
}
}else {
} else {
ToastUtils.showShort("版本已是最新!");
}
}
......@@ -246,17 +243,17 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
/**
* 下载APK
*
* @param context
* @param url 下载地址
* @param name 文件名字
* @param url  下载地址
* @param name  文件名字
*/
public void updataApk(Context context, String url, String name)
{
public void updataApk(Context context, String url, String name) {
showDialog();
model.downFile(url,name).subscribe(new Observer<ResponseBody>() {
model.downFile(url, name).subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
Log.e("下载","onSubscribe");
Log.e("下载", "onSubscribe");
}
@Override
......@@ -272,18 +269,18 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
@Override
public void onComplete() {
Log.e("下载","onComplete");
Log.e("下载", "onComplete");
dismissDialog();
ToastUtils.showShort("下载成功");
installApk(context,name);
installApk(context, name);
}
});
}
//跳转安装APP
private void installApk(Context context, String path) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
File file = new File(Uri.parse(path).getPath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
......@@ -292,16 +289,14 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
} else {
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Adding the flag here
context.startActivity(intent);
}
public void goProtocol(View view)
{
if (StaticData.Protocols.size()>=3)
{
Bundle bundle= new Bundle();
public void goProtocol(View view) {
if (StaticData.Protocols.size() >= 3) {
Bundle bundle = new Bundle();
bundle.putString("title", "隐私条款");
bundle.putString("URL", RetrofitClient.baseH5Url + StaticData.Protocols.get(2));
startActivity(CommWabActivity.class, bundle);
......
package com.xx.hbhbcompany.ui.work;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import com.tbruyelle.rxpermissions3.RxPermissions;
import com.xx.hbhbcompany.BR;
import com.xx.hbhbcompany.R;
import com.xx.hbhbcompany.activity.adapter.WorkIconsAdapter;
......@@ -97,7 +103,30 @@ public class WorkFragment extends BaseFragment<FragmentWorkBinding, WorkViewMode
@Override
public void onResume() {
super.onResume();
/*调取工作台三个统计数接口*/
// 调取工作台三个统计数接口
viewModel.getWorkNumber();
// 检查版本
viewModel.rxPermissions = new RxPermissions(this);
// 检查版本
viewModel.checkVersion(binding.getRoot().getRootView());
// 安装新版本
viewModel.openInstall.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
if ("1".equals(s)) {
Uri packageURI = Uri.parse("package:" +getContext().getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, 1002);
}
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!Environment.isExternalStorageManager()) {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.setData(Uri.parse("package:" + getContext().getPackageName()));
startActivityForResult(intent, 1024);
}
}
}
}
package com.xx.hbhbcompany.ui.work;
import android.Manifest;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.core.content.FileProvider;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import com.tbruyelle.rxpermissions3.RxPermissions;
import com.xx.hbhbcompany.R;
import com.xx.hbhbcompany.activity.adapter.WorkIconsAdapter;
import com.xx.hbhbcompany.data.http.requst.WorkRequest;
......@@ -18,13 +26,20 @@ import com.xx.hbhbcompany.data.local.LocalData;
import com.xx.hbhbcompany.data.staticdata.StaticData;
import com.xx.hbhbcompany.ui.appeal.AppealActivity;
import com.xx.hbhbcompany.ui.appeallist.AppealListActivity;
import com.xx.hbhbcompany.ui.home.HomeViewModel;
import com.xx.hbhbcompany.ui.merchantaudit.MerchantAuditListActivity;
import com.xx.hbhbcompany.ui.order.OrderActivity;
import com.xx.hbhbcompany.ui.productlist.ProductListActivity;
import com.xx.xxviewlibrary.comm.CommTextDialog;
import com.xx.xxviewlibrary.comm.RefuseDialogBean;
import com.xx.xxviewlibrary.model.VersionBean;
import com.xx.xxviewlibrary.utils.CommUtilsKt;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
......@@ -34,14 +49,158 @@ import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.http.ApiDisposablePageObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
import okhttp3.ResponseBody;
public class WorkViewModel extends BaseViewModel<WorkRequest> {
RxPermissions rxPermissions;
public MutableLiveData<String> openInstall = new MutableLiveData<>("");
public String merchantStatus = "0";
public int pageNum = 1;
public MutableLiveData<List<MerchantBean>> mAuditList = new MutableLiveData<>(new ArrayList<>());
/*四个按钮*/
public MutableLiveData<List<WorkIconBean>> workIconsList = new MutableLiveData<>(new ArrayList<>());
/**
* 获取最新APK版本号
*
* @param view
*/
public void checkVersion(View view) {
model.checkVersion().compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(WorkViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<VersionBean>() {
@Override
public void onSuccess(VersionBean resultBean) {
if (CommUtilsKt.checkVersionUpdata(CommUtilsKt.getVersion(view.getContext()), resultBean.getAppVersion())) {
//不强制
if (resultBean.getPushFlag().equals("0")) {
showCommTextDialog(new RefuseDialogBean("是否前往更新", "确定", "取消", "更新提示"), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
}
@Override
public void acceptBack() {
rxPermissions
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(granted -> {
if (granted) { // Always true pre-M
/* rxPermissions
.request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
.subscribe(granteds -> {
if (granteds) { // Always true pre-M
} else {
ToastUtils.showShort("请允许安装外部来源应用");
openInstall.postValue("1");
}
});*/
updataApk(view.getContext(), resultBean.getVersionFile(), view.getContext().getFilesDir().getPath() + resultBean.getVersionFile().substring(
resultBean.getVersionFile().lastIndexOf("/")));
} else {
ToastUtils.showShort("请开启文件相关权限");
}
});
}
});
} else {
showCommTextDialog(new RefuseDialogBean("请前往更新", "确定", null), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
finish();
}
@Override
public void acceptBack() {
rxPermissions
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(granted -> {
if (granted) { // Always true pre-M
updataApk(view.getContext(), resultBean.getVersionFile(), view.getContext().getFilesDir().getPath() + resultBean.getVersionFile().substring(
resultBean.getVersionFile().lastIndexOf("/")));
} else {
ToastUtils.showShort("请开启文件相关权限");
}
});
}
});
}
} else {
ToastUtils.showShort("版本已是最新!");
}
}
@Override
public void onError(String Error) {
}
});
}
/**
* 下载APK
*
* @param context
* @param url  下载地址
* @param name  文件名字
*/
public void updataApk(Context context, String url, String name) {
showDialog();
model.downFile(url, name).subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
Log.e("下载", "onSubscribe");
}
@Override
public void onNext(@io.reactivex.rxjava3.annotations.NonNull ResponseBody responseBody) {
}
@Override
public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) {
ToastUtils.showShort("下载失败");
dismissDialog();
}
@Override
public void onComplete() {
Log.e("下载", "onComplete");
dismissDialog();
ToastUtils.showShort("下载成功");
installApk(context, name);
}
});
}
//跳转安装APP
private void installApk(Context context, String path) {
Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File(Uri.parse(path).getPath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uri = FileProvider.getUriForFile(context, "com.xx.hbhbcompany.fileProvider", file);
intent.setDataAndType(uri, "application/vnd.android.package-archive");
} else {
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Adding the flag here
context.startActivity(intent);
}
/*动态添加四个按钮*/
public void getWorkList() {
List<WorkIconBean> list = workIconsList.getValue(); // 获取List对象
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment