From 3cd065cb6ee24f8360c5187a5abf71b00a2eea5c Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Mon, 10 Jul 2023 16:20:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=84=E7=90=86=E5=BC=B9=E7=AA=97=20d?= =?UTF-8?q?ismiss=20=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/vspace/VSpaceDialogFragment.kt | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt b/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt index fde44ae673..8b4f166264 100644 --- a/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt +++ b/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt @@ -92,7 +92,7 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() { val mViewModel = viewModelProvider() 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?,