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()