diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt index 04eb3504b5..65fcb4e723 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt @@ -3,7 +3,6 @@ package com.gh.common.util import android.content.Context import android.os.Message import android.text.TextUtils -import android.util.Log import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.collection.ArrayMap @@ -265,11 +264,17 @@ object DownloadItemUtils { } } } else if (gameEntity.getApk().size == 1) { - val downloadEntity = if (gameEntity.isVGame()) { - VHelper.getVDownloadEntitySnapshot(gameEntity.id, gameEntity.getUniquePackageName()) - } else { - gameEntity.getEntryMap()[gameEntity.getUniquePlatform()] ?: DownloadManager.getInstance() - .getDownloadEntitySnapshot(gameEntity) + // 优先从下载管理获取 downloadEntity + var downloadEntity = DownloadManager.getInstance().getDownloadEntitySnapshot(gameEntity) + + // 找不到时,若类型为畅玩,尝试从畅玩数据库的快照中获取 downloadEntity。若存在,代表游戏已下载并成功安装 + if (downloadEntity == null && gameEntity.isVGame()) { + downloadEntity = VHelper.getVDownloadEntitySnapshot(gameEntity.id, gameEntity.getUniquePackageName()) + } + + // 还是找不到时,尝试从 gameEntity 里找已绑定的 downloadEntity + if (downloadEntity == null) { + downloadEntity = gameEntity.getEntryMap().getOrDefault(gameEntity.getUniquePlatform(), null) } if (downloadEntity != null) { @@ -947,9 +952,10 @@ object DownloadItemUtils { } } } else { - val downloadEntity = gameEntity.getEntryMap()[gameEntity.getUniquePlatform()] ?: DownloadManager.getInstance() - .getDownloadEntitySnapshot(gameEntity) - + var downloadEntity = DownloadManager.getInstance().getDownloadEntitySnapshot(gameEntity) + if (downloadEntity == null && gameEntity.getApk().size == 1) { + downloadEntity = gameEntity.getEntryMap().getOrDefault(gameEntity.getUniquePlatform(), null) + } if (downloadEntity != null) { val xapkStatus = downloadEntity.meta[XapkInstaller.XAPK_UNZIP_STATUS] if (XapkUnzipStatus.INSTALLING.name == xapkStatus) {// 安装过程中避免重复点击