fix: 处理弹窗 dismiss 问题
This commit is contained in:
@ -92,7 +92,7 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
|
||||
|
||||
val mViewModel = viewModelProvider<VSpaceDialogViewModel>()
|
||||
mViewModel.packageLiveData.observe(this) {
|
||||
dismissDialogIfInstalled(false)
|
||||
dismissDialogIfInstalled()
|
||||
}
|
||||
|
||||
mBinding.downloadBtn.text = "下载畅玩助手服务组件"
|
||||
@ -206,27 +206,29 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
|
||||
} else {
|
||||
showVSpace32DownloadDialogIfNeeded()
|
||||
}
|
||||
dismissDialogIfInstalled(false)
|
||||
}
|
||||
} else {
|
||||
// 手动再检查一下安装状态,避免出现已安装但是没有 dismiss 弹窗的问题
|
||||
dismissDialogIfInstalled(true)
|
||||
}
|
||||
|
||||
// 检查安装状态,避免出现已安装但是没有 dismiss 弹窗的问题
|
||||
dismissDialogIfInstalled()
|
||||
}
|
||||
|
||||
/**
|
||||
* dismiss 当前 VSpaceDialogFragment (如果满足入参条件的话)
|
||||
* @param required64BitVersionMatched 是否需要 64 位组件匹配版本
|
||||
*/
|
||||
private fun dismissDialogIfInstalled(required64BitVersionMatched: Boolean) {
|
||||
if (PackageUtils.isInstalledFromAllPackage(requireContext(), VHelper.DEFAULT_VSPACE_PACKAGENAME)) {
|
||||
if (required64BitVersionMatched) {
|
||||
if (mAppEntity64?.version == PackageUtils.getVersionNameByPackageName(VHelper.DEFAULT_VSPACE_PACKAGENAME)) {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
} else {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
private fun dismissDialogIfInstalled() {
|
||||
// 需要下载的 64 位组件是否与已安装的 64 位组件版本一致
|
||||
val is64BitVersionMatched =
|
||||
mAppEntity64 == null
|
||||
|| mAppEntity64?.version == PackageUtils.getVersionNameByPackageName(VHelper.DEFAULT_VSPACE_PACKAGENAME)
|
||||
|
||||
// 需要下载的 32 位组件是否与已安装的 32 位组件版本一致
|
||||
val is32BitVersionMatched =
|
||||
mAppEntity32 == null
|
||||
|| mAppEntity32?.version == PackageUtils.getVersionNameByPackageName(VHelper.VSPACE_32BIT_PACKAGENAME)
|
||||
|
||||
if (is64BitVersionMatched && is32BitVersionMatched) {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
}
|
||||
|
||||
@ -385,7 +387,6 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
val downloadDialog = VSpaceDialogFragment().apply {
|
||||
arguments = Bundle().apply {
|
||||
if (appEntity64 != null) putParcelable(KEY_APP_ENTITY_64, appEntity64)
|
||||
@ -403,6 +404,14 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示下载弹窗
|
||||
* @param appEntity64 需要下载的 64 位组件实体,不为空即代表需要下载
|
||||
* @param appEntity32 需要下载的 32 位组件实体,不为空即代表需要下载
|
||||
* @param gameEntity 游戏相关的实体
|
||||
* @param autoDownload 是否需要显示弹窗即进行下载
|
||||
* @param isUpdate 是否为更新
|
||||
*/
|
||||
@JvmStatic
|
||||
fun showDownloadDialog(
|
||||
context: Context?,
|
||||
|
||||
Reference in New Issue
Block a user