From 199067cf8a4b8656a1b432f40a8787494d2f306e Mon Sep 17 00:00:00 2001 From: juntao Date: Sun, 25 Apr 2021 18:07:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=B8=B8=E6=88=8F=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BC=98=E5=8C=96=E6=B1=87=E6=80=BB(0423=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=201,2)=20https://git.ghzs.com/pm/halo-app-issues/-/is?= =?UTF-8?q?sues/1211?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/PackageUtils.java | 39 +++++++++++++++++++ .../java/com/gh/download/DownloadManager.java | 3 +- .../java/com/gh/download/PackageObserver.kt | 12 +++--- .../gamecenter/gamedetail/desc/DescAdapter.kt | 5 ++- 4 files changed, 51 insertions(+), 8 deletions(-) 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 = HashMap() - kv6["安装或卸载"] = "卸载完成" - DataUtils.onEvent(application, "插件化", mDownloadEntity.name, kv6) + mDownloadEntity?.let { + if (it.isPluggable || it.isUpdate) { + val kv6: MutableMap = HashMap() + kv6["安装或卸载"] = "卸载完成" + DataUtils.onEvent(application, "插件化", mDownloadEntity.name, kv6) // DataUtils.onMtaEvent(this, // "插件化_新", @@ -135,7 +136,8 @@ object PackageObserver { // "游戏", mDownloadEntity.getName() + "-" + mDownloadEntity.getPlatform(), // "操作", "卸载完成", // "网络状态", DeviceUtils.getNetwork(HaloApp.getInstance().getApplication())); - PackageInstaller.install(application, mDownloadEntity) + PackageInstaller.install(application, mDownloadEntity) + } } // 更新已安装游戏 diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt index 5edef34825..0b978bd167 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt @@ -535,7 +535,8 @@ class DescAdapter(context: Context, } } viewHolder.binding.titleTv.text = "新手攻略" - if (mViewModel.game?.zone?.style == "link") { + if (mViewModel.game?.zone?.status != "off" + && mViewModel.game?.zone?.style == "link") { viewHolder.binding.moreTv.text = "进入攻略专区" viewHolder.binding.moreTv.visibility = View.VISIBLE } else { @@ -546,7 +547,7 @@ class DescAdapter(context: Context, viewHolder.binding.moreTv.setOnClickListener { MtaHelper.onEvent("游戏详情_新", "新手攻略卡片_更多", gameName) - if (viewHolder.binding.titleTv.text == "更多") { + if (viewHolder.binding.moreTv.text == "更多") { val intent = GameNewsActivity.getIntent(mContext, mViewModel.game?.name, mViewModel.game?.id, mEntrance + "+(游戏详情[" + mViewModel.game?.name + "]:新手攻略-全部)") mContext.startActivity(intent)