From 8e0dcd74e5cc30f612801ec5c8be5c79d93aafd0 Mon Sep 17 00:00:00 2001 From: juntao Date: Wed, 25 May 2022 15:11:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=90=AF=E5=8A=A8(=E7=95=85?= =?UTF-8?q?=E7=8E=A9)=E7=9A=84=E5=88=A4=E6=96=AD=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/GameUtils.java | 10 ++++++--- app/src/main/java/com/gh/vspace/VHelper.kt | 22 ++++++++++++------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/GameUtils.java b/app/src/main/java/com/gh/common/util/GameUtils.java index b395f21722..8c44b8b309 100644 --- a/app/src/main/java/com/gh/common/util/GameUtils.java +++ b/app/src/main/java/com/gh/common/util/GameUtils.java @@ -18,6 +18,7 @@ import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.entity.PluginLocation; import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.manager.PackagesManager; +import com.gh.vspace.VHelper; import com.lightgame.download.DownloadEntity; import com.lightgame.download.DownloadStatus; @@ -89,7 +90,7 @@ public class GameUtils { boolean isRelatedEmulatorInstalled = false; // 若该游戏是模拟器游戏时其对应的模拟器是否已经安装 - DownloadEntity downloadEntity; + DownloadEntity downloadEntity = null; Object gh_id; apkFor: for (ApkEntity apkEntity : gameEntity.getApk()) { @@ -149,8 +150,11 @@ public class GameUtils { } if (gameEntity.isVGame()) { - // 如果 doneCount 为 0 表明本地并没有此游戏的数据库数据,需要重新下载 - if (doneCount == 0) { + // 如果 doneCount 为 0 或者数据库为空 + // 表明本地并没有此游戏的数据库数据,需要重新下载 + if (doneCount == 0 + || downloadEntity == null + || !VHelper.isInstalled(downloadEntity.getPackageName())) { installCount = 0; } else { doneCount = 0; diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index 4eecf39110..0bbf5b8750 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -10,7 +10,9 @@ import com.gh.common.constant.Config import com.gh.common.util.PackageUtils import com.gh.download.DownloadManager import com.gh.download.PackageObserver +import com.gh.gamecenter.R import com.gh.gamecenter.common.utils.DialogHelper +import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.core.AppExecutor import com.gh.gamecenter.core.utils.EmptyCallback import com.gh.gamecenter.core.utils.ToastUtils @@ -118,7 +120,7 @@ object VHelper { // 检查更新 val containsUpdate = - vaConfig32?.versionCode ?: 0 > PackageUtils.getVersionCodeByPackageName(vaConfig32?.packageName) + vaConfig32?.versionCode ?: 0 == PackageUtils.getVersionCodeByPackageName(vaConfig32?.packageName) if (containsUpdate) { // 触发更新弹窗 @@ -126,19 +128,23 @@ object VHelper { context = context, title = "服务工具更新提示", content = "单机类游戏被删除将可能导致本地存档、充值数据丢失,请确认后操作(网游类游戏删除不会影响游戏存档和充值数据)", - confirmText = "立即更新", - cancelText = "继续游戏", - confirmClickCallback = { + cancelText = "立即更新", + confirmText = "继续游戏", + cancelClickCallback = { VSpaceDialogFragment.showDownloadDialog(context) }, - cancelClickCallback = { + confirmClickCallback = { callback.invoke() + }, + extraConfig = DialogHelper.Config(centerTitle = true), + uiModificationCallback = { + it.confirmTv.setTextColor(R.color.text_subtitle.toColor(context)) } ) return } - callback.invoke() + checkStoragePermissionBeforeAction(context, callback) } else { callback.invoke() } @@ -187,14 +193,14 @@ object VHelper { /** * 检查存储权限,若已授予直接执行后续逻辑 */ - private fun checkStoragePermissionBeforeAction(activity: Activity, callback: () -> Unit) { + private fun checkStoragePermissionBeforeAction(context: Context, callback: () -> Unit) { try { val isStoragePermissionGranted = mDelegateManager.checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE) if (isStoragePermissionGranted) { callback.invoke() } else { - activity.startActivity(mDelegateManager.requestPermissionIntent) + context.startActivity(mDelegateManager.requestPermissionIntent) } } catch (e: RuntimeException) { e.printStackTrace()