diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 59ae672b97..b9153f6fac 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -578,6 +578,45 @@ public class PackageUtils { return false; } + public static boolean isNonPluginUpdatable(ApkEntity apkEntity, GameEntity gameEntity) { + // 非插件游戏更新 + // ghVersion 不存在即是非插件游戏 + if (TextUtils.isEmpty(apkEntity.getGhVersion())) { + String versionFromRequest = apkEntity.getVersion(); + String versionFromInstalledApp = getVersionByPackage(apkEntity.getPackageName()); + + // 是否需要显示更新 + boolean shouldShowUpdate = apkEntity.getForce(); + + if (shouldShowUpdate && !TextUtils.isEmpty(versionFromRequest) && !TextUtils.isEmpty(versionFromInstalledApp)) { + // 根据版本判断是否需要更新 + shouldShowUpdate = new Version(versionFromRequest).isHigherThan(versionFromInstalledApp); + + if (shouldShowUpdate) { + GameUpdateEntity updateEntity = new GameUpdateEntity(); + updateEntity.setId(gameEntity.getId()); + updateEntity.setName(gameEntity.getName()); + updateEntity.setIcon(gameEntity.getIcon()); + updateEntity.setPackageName(apkEntity.getPackageName()); + updateEntity.setSize(apkEntity.getSize()); + updateEntity.setVersion(apkEntity.getVersion()); + updateEntity.setGhVersion(apkEntity.getGhVersion()); + updateEntity.setUrl(apkEntity.getUrl()); + updateEntity.setPlatform(apkEntity.getPlatform()); + updateEntity.setEtag(apkEntity.getEtag()); + updateEntity.setBrief(gameEntity.getBrief()); + updateEntity.setTag(gameEntity.getTag()); + updateEntity.setTagStyle(gameEntity.getTagStyle()); + updateEntity.setIndexPlugin(gameEntity.getIndexPlugin()); + updateEntity.setPluginDesc(gameEntity.getPluginDesc()); + updateEntity.setFormat(apkEntity.getFormat()); + return true; + } + } + } + return false; + } + /** * todo 统一判断 *
diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java
index 86c5ead8b5..e48ab37d33 100644
--- a/app/src/main/java/com/gh/download/DownloadManager.java
+++ b/app/src/main/java/com/gh/download/DownloadManager.java
@@ -303,7 +303,8 @@ public class DownloadManager implements DownloadStatusListener {
// todo 不是应该实时判断吗?
if (PackageUtils.isCanPluggable(apkEntity)) {
downloadEntity.setPluggable(true);
- } else if (PackageUtils.isCanUpdate(apkEntity, gameEntity.getId())) {
+ } else if (PackageUtils.isCanUpdate(apkEntity, gameEntity.getId())
+ || PackageUtils.isNonPluginUpdatable(apkEntity, gameEntity)) {
downloadEntity.setUpdate(true);
}
diff --git a/app/src/main/java/com/gh/download/PackageObserver.kt b/app/src/main/java/com/gh/download/PackageObserver.kt
index 1dd3df2530..ca91de1f53 100644
--- a/app/src/main/java/com/gh/download/PackageObserver.kt
+++ b/app/src/main/java/com/gh/download/PackageObserver.kt
@@ -124,10 +124,11 @@ object PackageObserver {
if ("卸载" == busFour.type) {
mPackageViewModel.addUninstalledGame(packageName)
- if (mDownloadEntity != null && mDownloadEntity.isPluggable) {
- val kv6: MutableMap