Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
HBHAndroid
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨秀秀
HBHAndroid
Commits
bb553281
Commit
bb553281
authored
Feb 04, 2024
by
小费同学阿
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
强制更新主页添加实时检测版本
parent
0bab1e41
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
455 additions
and
2 deletions
+455
-2
HomeRequest.java
...java/com/xx/merchanthbh/data/http/requst/HomeRequest.java
+13
-0
HuanBoHaiRequest.java
...com/xx/merchanthbh/data/http/requst/HuanBoHaiRequest.java
+12
-1
HomeActivity.java
...rc/main/java/com/xx/merchanthbh/ui/home/HomeActivity.java
+6
-0
HomeFragment.java
...rc/main/java/com/xx/merchanthbh/ui/home/HomeFragment.java
+34
-0
HomeViewModel.java
...c/main/java/com/xx/merchanthbh/ui/home/HomeViewModel.java
+160
-1
HuanBoHaiFragment.java
...va/com/xx/merchanthbh/ui/huanbohai/HuanBoHaiFragment.java
+33
-0
HuanBoHaiViewModel.java
...a/com/xx/merchanthbh/ui/huanbohai/HuanBoHaiViewModel.java
+168
-0
LogOffActivity.java
...ain/java/com/xx/merchanthbh/ui/logoff/LogOffActivity.java
+1
-0
MineFragment.java
...rc/main/java/com/xx/merchanthbh/ui/mine/MineFragment.java
+27
-0
dialog_offshelf_reason.xml
app/src/main/res/layout/dialog_offshelf_reason.xml
+1
-0
No files found.
app/src/main/java/com/xx/merchanthbh/data/http/requst/HomeRequest.java
View file @
bb553281
...
...
@@ -3,8 +3,11 @@ package com.xx.merchanthbh.data.http.requst;
import
com.xx.merchanthbh.data.http.BaseRespons
;
import
com.xx.merchanthbh.data.http.respons.HomeStatisticalBean
;
import
com.xx.merchanthbh.data.http.respons.MessageBean
;
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
;
import
me.goldze.mvvmhabit.http.BaseResponse
;
public
class
HomeRequest
extends
BaseRespons
{
...
...
@@ -15,6 +18,16 @@ public class HomeRequest extends BaseRespons {
return
getApiService
().
getHomeStatistical
();
}
/**
* 强制更新
*/
public
Observable
<
BaseResponse
<
VersionBean
>>
checkVersion
()
{
return
getApiService
().
getLineVersion
(
new
ApiParams
<
VersionBody
>().
setParams
(
new
VersionBody
(
"2"
,
"2"
)
)
);
}
/**
* 签到
...
...
app/src/main/java/com/xx/merchanthbh/data/http/requst/HuanBoHaiRequest.java
View file @
bb553281
...
...
@@ -6,6 +6,8 @@ import com.xx.merchanthbh.data.http.respons.AdvertisingBean;
import
com.xx.merchanthbh.data.http.respons.ConsultationInformationBean
;
import
com.xx.merchanthbh.data.http.respons.ConsultationTitleBean
;
import
com.xx.merchanthbh.data.local.LocalData
;
import
com.xx.xxviewlibrary.model.VersionBean
;
import
com.xx.xxviewlibrary.model.VersionBody
;
import
java.util.List
;
...
...
@@ -40,7 +42,16 @@ public class HuanBoHaiRequest extends BaseRespons {
RequestBody
body
=
apiParams
.
setParams
(
requestBody
);
return
getApiService
().
getActivityList
(
body
,
page
);
}
/**
* 强制更新
*/
public
Observable
<
BaseResponse
<
VersionBean
>>
checkVersion
()
{
return
getApiService
().
getLineVersion
(
new
ApiParams
<
VersionBody
>().
setParams
(
new
VersionBody
(
"2"
,
"2"
)
)
);
}
/**
* 获取广告列表
* @param companyId 所属公司ID
...
...
app/src/main/java/com/xx/merchanthbh/ui/home/HomeActivity.java
View file @
bb553281
package
com
.
xx
.
merchanthbh
.
ui
.
home
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Environment
;
import
android.os.Handler
;
import
android.os.Message
;
import
android.provider.Settings
;
import
android.view.KeyEvent
;
import
android.widget.Toast
;
import
androidx.fragment.app.Fragment
;
import
androidx.lifecycle.Observer
;
import
com.xx.merchanthbh.BR
;
import
com.xx.merchanthbh.R
;
import
com.xx.merchanthbh.data.staticdata.StaticData
;
import
com.xx.merchanthbh.databinding.ActivityHomeBinding
;
import
com.xx.merchanthbh.ui.home.HomeFragment
;
import
com.tbruyelle.rxpermissions3.RxPermissions
;
import
com.xx.merchanthbh.ui.home.HomeViewModel
;
import
com.xx.merchanthbh.ui.huanbohai.HuanBoHaiFragment
;
import
com.xx.merchanthbh.ui.login.LoginActivity
;
...
...
app/src/main/java/com/xx/merchanthbh/ui/home/HomeFragment.java
View file @
bb553281
package
com
.
xx
.
merchanthbh
.
ui
.
home
;
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
;
import
android.view.View
;
...
...
@@ -9,6 +14,7 @@ import android.view.ViewGroup;
import
androidx.annotation.Nullable
;
import
androidx.lifecycle.Observer
;
import
com.tbruyelle.rxpermissions3.RxPermissions
;
import
com.xx.merchanthbh.BR
;
import
com.xx.merchanthbh.R
;
import
com.xx.merchanthbh.data.http.requst.ConsultRequest
;
...
...
@@ -47,7 +53,35 @@ public class HomeFragment extends BaseFragment<FragmentHomeBinding, HomeViewMode
public
int
initVariableId
()
{
return
BR
.
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
()
{
...
...
app/src/main/java/com/xx/merchanthbh/ui/home/HomeViewModel.java
View file @
bb553281
package
com
.
xx
.
merchanthbh
.
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
;
...
...
@@ -35,13 +41,20 @@ import com.xx.merchanthbh.ui.point.StorePointsActivity;
import
com.xx.merchanthbh.ui.productmanager.ProductManagerActivity
;
import
com.xx.merchanthbh.ui.recruitment.RecruitmentActivity
;
import
com.xx.merchanthbh.ui.share.ShareActivity
;
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.math.BigDecimal
;
import
java.text.NumberFormat
;
import
java.util.List
;
import
io.reactivex.rxjava3.core.Observer
;
import
io.reactivex.rxjava3.disposables.Disposable
;
import
io.reactivex.rxjava3.functions.Consumer
;
import
io.reactivex.rxjava3.schedulers.Schedulers
;
import
me.goldze.mvvmhabit.base.BaseViewModel
;
import
me.goldze.mvvmhabit.binding.command.BindingAction
;
import
me.goldze.mvvmhabit.binding.command.BindingCommand
;
...
...
@@ -49,9 +62,12 @@ 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
BaseViewModel
<
HomeRequest
>
{
/*权限*/
RxPermissions
rxPermissions
;
public
ObservableField
<
String
>
title
=
new
ObservableField
<>(
LocalData
.
getMerchant
().
getStoreName
());
//今日成交的绑定
...
...
@@ -66,7 +82,8 @@ public class HomeViewModel extends BaseViewModel<HomeRequest> {
public
MutableLiveData
<
Boolean
>
showSignDialog
=
new
MutableLiveData
<>();
public
MerchantBean
mb
=
LocalData
.
getMerchant
();
/*安装新版本*/
public
MutableLiveData
<
String
>
openInstall
=
new
MutableLiveData
<>(
""
);
public
HomeViewModel
(
@NonNull
Application
application
)
{
super
(
application
);
}
...
...
@@ -107,6 +124,148 @@ public class HomeViewModel extends BaseViewModel<HomeRequest> {
}
});
}
/**
* 获取最新APK版本号
*
* @param view
*/
public
void
checkVersion
(
View
view
)
{
Log
.
v
(
"版本更新"
,
"版本更新"
);
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
)
{
Log
.
v
(
"当前版本号"
,
resultBean
.
getAppVersion
());
StaticData
.
appVersionNumber
=
resultBean
.
getAppVersion
();
if
(
CommUtilsKt
.
checkVersionUpdata
(
CommUtilsKt
.
getVersion
(
view
.
getContext
()),
resultBean
.
getAppVersion
()))
{
if
(
resultBean
.
getPushFlag
().
equals
(
"1"
))
{
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
)
{
// 处理权限已授予的情况
updataApk
(
view
.
getContext
(),
resultBean
.
getVersionFile
(),
view
.
getContext
().
getFilesDir
().
getPath
()
+
resultBean
.
getVersionFile
().
substring
(
resultBean
.
getVersionFile
().
lastIndexOf
(
"/"
)));
}
else
{
// 处理权限被拒绝的情况
ToastUtils
.
showShort
(
"请开启文件相关权限"
);
}
});
}
});
}
else
{
showCommTextDialog
(
new
RefuseDialogBean
(
"有新版本,是否更新?"
,
"去更新"
,
"取消"
,
"更新提示"
),
new
CommTextDialog
.
onAcceptCallBack
()
{
@Override
public
void
refuseBack
()
{
/*强制更新标识位变更--重置用户登录*/
StaticData
.
updateLogin
=
1
;
}
@Override
public
void
acceptBack
()
{
/*强制更新标识位变更--可以用户登录*/
StaticData
.
updateLogin
=
0
;
rxPermissions
.
request
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
.
unsubscribeOn
(
Schedulers
.
io
())
// 使订阅不可取消
.
subscribe
(
granted
->
{
if
(
granted
)
{
updataApk
(
view
.
getContext
(),
resultBean
.
getVersionFile
(),
view
.
getContext
().
getFilesDir
().
getPath
()
+
resultBean
.
getVersionFile
().
substring
(
resultBean
.
getVersionFile
().
lastIndexOf
(
"/"
)));
}
else
{
ToastUtils
.
showShort
(
"请开启文件相关权限"
);
}
});
}
});
}
}
else
{
/*强制更新标识位变更--重置用户登录*/
StaticData
.
updateLogin
=
1
;
}
}
@Override
public
void
onError
(
String
Error
)
{
/*强制更新标识位变更--重置用户登录*/
StaticData
.
updateLogin
=
1
;
}
});
}
/**
* 下载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
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
File
file
=
new
File
(
Uri
.
parse
(
path
).
getPath
());
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
intent
.
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
);
Uri
uri
=
FileProvider
.
getUriForFile
(
context
,
"com.xx.merchanthbh.fileProvider"
,
file
);
intent
.
setDataAndType
(
uri
,
"application/vnd.android.package-archive"
);
}
else
{
intent
.
setDataAndType
(
Uri
.
fromFile
(
file
),
"application/vnd.android.package-archive"
);
}
context
.
startActivity
(
intent
);
}
public
HomeViewModel
(
@NonNull
Application
application
,
HomeRequest
model
)
{
super
(
application
,
model
);
...
...
app/src/main/java/com/xx/merchanthbh/ui/huanbohai/HuanBoHaiFragment.java
View file @
bb553281
...
...
@@ -5,7 +5,11 @@ import static com.xx.merchanthbh.utils.RetrofitClient.baseH5Url;
import
static
me
.
goldze
.
mvvmhabit
.
utils
.
Utils
.
Interceptor_TOKEN
;
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
;
...
...
@@ -13,6 +17,7 @@ import android.view.ViewGroup;
import
androidx.annotation.Nullable
;
import
androidx.lifecycle.Observer
;
import
com.tbruyelle.rxpermissions3.RxPermissions
;
import
com.xx.merchanthbh.BR
;
import
com.xx.merchanthbh.R
;
import
com.xx.merchanthbh.data.http.requst.HuanBoHaiRequest
;
...
...
@@ -35,7 +40,35 @@ import me.goldze.mvvmhabit.base.BaseFragment;
/*环渤海页面*/
public
class
HuanBoHaiFragment
extends
BaseFragment
<
FragmentHuanbohaiBinding
,
HuanBoHaiViewModel
>
{
@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
()
{
...
...
app/src/main/java/com/xx/merchanthbh/ui/huanbohai/HuanBoHaiViewModel.java
View file @
bb553281
package
com
.
xx
.
merchanthbh
.
ui
.
huanbohai
;
import
android.Manifest
;
import
android.app.Application
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.BitmapFactory
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.util.Log
;
import
android.view.View
;
import
android.widget.ImageView
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
import
androidx.core.content.FileProvider
;
import
androidx.lifecycle.MutableLiveData
;
import
io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
;
import
io.reactivex.rxjava3.core.Observer
;
import
io.reactivex.rxjava3.schedulers.Schedulers
;
import
me.goldze.mvvmhabit.base.ListBaseViewModel
;
import
com.tbruyelle.rxpermissions3.RxPermissions
;
import
com.xx.merchanthbh.R
;
import
com.xx.merchanthbh.data.http.requst.HuanBoHaiRequest
;
import
com.xx.merchanthbh.data.http.respons.ActivityCenterBean
;
...
...
@@ -19,12 +30,19 @@ import com.xx.merchanthbh.data.http.respons.ConsultationInformationBean;
import
com.xx.merchanthbh.data.http.respons.MerchantBean
;
import
com.xx.merchanthbh.data.local.LocalData
;
import
com.xx.merchanthbh.data.http.respons.ConsultationTitleBean
;
import
com.xx.merchanthbh.data.staticdata.StaticData
;
import
com.xx.merchanthbh.fragment.adapter.ConsultationInformationAdapter
;
import
com.xx.merchanthbh.fragment.adapter.ConsultationInformationTitleAdapter
;
import
com.xx.merchanthbh.ui.activities.ActivitiesActivity
;
import
com.xx.merchanthbh.ui.consult.ConsultationActivity
;
import
com.xx.merchanthbh.ui.home.HomeViewModel
;
import
com.xx.merchanthbh.ui.msg.MessageActivity
;
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.Arrays
;
import
java.util.List
;
...
...
@@ -36,9 +54,16 @@ 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
HuanBoHaiViewModel
extends
ListBaseViewModel
<
HuanBoHaiRequest
>
{
/*权限*/
RxPermissions
rxPermissions
;
/*安装新版本*/
public
MutableLiveData
<
String
>
openInstall
=
new
MutableLiveData
<>(
""
);
// 创建活动中心实体对象
public
MutableLiveData
<
List
<
AdvertisingBean
>>
AdvertisingList
=
new
MutableLiveData
<>(
new
ArrayList
<>());
// 创建活动中心实体对象
...
...
@@ -80,6 +105,149 @@ public class HuanBoHaiViewModel extends ListBaseViewModel<HuanBoHaiRequest> {
getConsultationsList
();
getActivityCenterList
();
}
/**
* 获取最新APK版本号
*
* @param view
*/
public
void
checkVersion
(
View
view
)
{
Log
.
v
(
"版本更新"
,
"版本更新"
);
model
.
checkVersion
().
compose
(
RxUtils
.
schedulersTransformer
())
//线程调度
.
doOnSubscribe
(
HuanBoHaiViewModel
.
this
)
.
doOnSubscribe
(
new
Consumer
<
Disposable
>()
{
@Override
public
void
accept
(
Disposable
disposable
)
throws
Exception
{
}
}).
subscribe
(
new
ApiDisposableObserver
<
VersionBean
>()
{
@Override
public
void
onSuccess
(
VersionBean
resultBean
)
{
Log
.
v
(
"当前版本号"
,
resultBean
.
getAppVersion
());
StaticData
.
appVersionNumber
=
resultBean
.
getAppVersion
();
if
(
CommUtilsKt
.
checkVersionUpdata
(
CommUtilsKt
.
getVersion
(
view
.
getContext
()),
resultBean
.
getAppVersion
()))
{
if
(
resultBean
.
getPushFlag
().
equals
(
"1"
))
{
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
)
{
// 处理权限已授予的情况
updataApk
(
view
.
getContext
(),
resultBean
.
getVersionFile
(),
view
.
getContext
().
getFilesDir
().
getPath
()
+
resultBean
.
getVersionFile
().
substring
(
resultBean
.
getVersionFile
().
lastIndexOf
(
"/"
)));
}
else
{
// 处理权限被拒绝的情况
ToastUtils
.
showShort
(
"请开启文件相关权限"
);
}
});
}
});
}
else
{
showCommTextDialog
(
new
RefuseDialogBean
(
"有新版本,是否更新?"
,
"去更新"
,
"取消"
,
"更新提示"
),
new
CommTextDialog
.
onAcceptCallBack
()
{
@Override
public
void
refuseBack
()
{
/*强制更新标识位变更--重置用户登录*/
StaticData
.
updateLogin
=
1
;
}
@Override
public
void
acceptBack
()
{
/*强制更新标识位变更--可以用户登录*/
StaticData
.
updateLogin
=
0
;
rxPermissions
.
request
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
.
unsubscribeOn
(
Schedulers
.
io
())
// 使订阅不可取消
.
subscribe
(
granted
->
{
if
(
granted
)
{
updataApk
(
view
.
getContext
(),
resultBean
.
getVersionFile
(),
view
.
getContext
().
getFilesDir
().
getPath
()
+
resultBean
.
getVersionFile
().
substring
(
resultBean
.
getVersionFile
().
lastIndexOf
(
"/"
)));
}
else
{
ToastUtils
.
showShort
(
"请开启文件相关权限"
);
}
});
}
});
}
}
else
{
/*强制更新标识位变更--重置用户登录*/
StaticData
.
updateLogin
=
1
;
}
}
@Override
public
void
onError
(
String
Error
)
{
/*强制更新标识位变更--重置用户登录*/
StaticData
.
updateLogin
=
1
;
}
});
}
/**
* 下载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
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
File
file
=
new
File
(
Uri
.
parse
(
path
).
getPath
());
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
intent
.
addFlags
(
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
);
Uri
uri
=
FileProvider
.
getUriForFile
(
context
,
"com.xx.merchanthbh.fileProvider"
,
file
);
intent
.
setDataAndType
(
uri
,
"application/vnd.android.package-archive"
);
}
else
{
intent
.
setDataAndType
(
Uri
.
fromFile
(
file
),
"application/vnd.android.package-archive"
);
}
context
.
startActivity
(
intent
);
}
//调用活动中心的接口信息
public
void
getActivityCenterList
()
{
...
...
app/src/main/java/com/xx/merchanthbh/ui/logoff/LogOffActivity.java
View file @
bb553281
...
...
@@ -34,6 +34,7 @@ public class LogOffActivity extends BaseActivity<ActivityLogOffBinding, LogOffVi
super
.
onResume
();
// 手动更新页面UI内容
updateUI
();
}
/*更新页面,注销标志位做判断*/
...
...
app/src/main/java/com/xx/merchanthbh/ui/mine/MineFragment.java
View file @
bb553281
...
...
@@ -4,7 +4,9 @@ import static com.xx.merchanthbh.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
;
...
...
@@ -113,5 +115,30 @@ public class MineFragment extends BaseFragment<FragmentMineBinding, MineViewMode
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
);
}
}
}
}
\ No newline at end of file
app/src/main/res/layout/dialog_offshelf_reason.xml
View file @
bb553281
...
...
@@ -33,6 +33,7 @@
android:id=
"@+id/ll_tips"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:layout_centerHorizontal=
"true"
android:layout_marginTop=
"22dp"
android:orientation=
"vertical"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment