From c2eb0b267c8b84cb263a1ca84f84bc4b38caeb44 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Thu, 18 Jun 2020 17:32:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90"=E9=A6=96=E9=A1=B5=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E5=8C=96=E6=8F=90=E7=A4=BA=E5=8C=BA=E5=9F=9F=E4=BC=98?= =?UTF-8?q?=E5=8C=96"=E7=9A=84=E7=BA=A2=E7=82=B9=E4=BC=98=E5=8C=96=20https?= =?UTF-8?q?://gitlab.ghzs.com/pm/halo-app-issues/-/issues/898?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/HomePluggableHelper.kt | 3 +++ .../java/com/gh/download/DownloadManager.java | 26 ++++++++++++++----- .../gamecenter/download/DownloadFragment.kt | 11 +++++++- .../room/dao/HomePluggableFilterDao.kt | 3 +++ 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt index fdb24f135f..30161814a3 100644 --- a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt +++ b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt @@ -33,6 +33,9 @@ object HomePluggableHelper { return true } + @JvmStatic + fun getPermanentInactivePluggablePackage() = mHomePluggableFilterDao.getDataByTag("never") + @JvmStatic fun activationFilterData() { val filterList = mHomePluggableFilterDao.getDataByActive(false) diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index cc1041be0f..0d8b30c694 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -17,6 +17,7 @@ import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DeviceUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.GdtHelper; +import com.gh.common.util.HomePluggableHelper; import com.gh.common.util.MD5Utils; import com.gh.common.util.MtaHelper; import com.gh.common.util.NetworkUtils; @@ -25,6 +26,7 @@ import com.gh.common.util.SPUtils; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; +import com.gh.gamecenter.entity.HomePluggableFilterEntity; import com.gh.gamecenter.entity.PluginLocation; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.manager.PackagesManager; @@ -138,7 +140,6 @@ public class DownloadManager implements DownloadStatusListener { mUpdateMarks = SPUtils.getStringSet(UPDATE_IS_READ_MARK); - //TODO unregister this DownloadStatusManager.getInstance().registerTaskStatusListener(this); // 只有下载模块需要这坨东西,因此移动到这里初始化 @@ -152,7 +153,6 @@ public class DownloadManager implements DownloadStatusListener { statusMap = new ArrayMap<>(); downloadingMap = new ArrayMap<>(); - // TODO 这里的 handler 类的 case 可能会被多次调用,原因未知 mHandler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(Message msg) { @@ -722,12 +722,26 @@ public class DownloadManager implements DownloadStatusListener { } if (showRedPoint) return ""; - + if (updateList != null) { + // 首页永久忽略的插件化列表 + List permanentInactiveUpdateList = HomePluggableHelper.getPermanentInactivePluggablePackage(); for (GameUpdateEntity updateEntity : updateList) { - if (updateEntity.isShowPlugin(PluginLocation.only_index) - && !mUpdateMarks.contains(updateEntity.getId() + updateEntity.getPackageName())) { - return ""; + if (updateEntity.isShowPlugin(PluginLocation.only_index) && !mUpdateMarks.contains(updateEntity.getId() + updateEntity.getPackageName())) { + // 判断该更新的的包名是否被永久忽略 + if (permanentInactiveUpdateList != null) { + boolean isPluggablePermanentInactive = false; + for (HomePluggableFilterEntity filterEntity : permanentInactiveUpdateList) { + if (filterEntity.getPkgName().equals(updateEntity.getPackageName())) { + isPluggablePermanentInactive = true; + } + } + if (!isPluggablePermanentInactive) { + return ""; + } + } else { + return ""; + } } } } diff --git a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt index 857aa94a4f..6ff2ad7059 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt @@ -9,12 +9,14 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment import com.gh.base.fragment.BaseFragment_TabLayout +import com.gh.common.util.HomePluggableHelper import com.gh.common.util.MtaHelper import com.gh.common.util.dip2px import com.gh.common.util.visibleIf import com.gh.download.DownloadManager import com.gh.gamecenter.DownloadManagerActivity import com.gh.gamecenter.R +import com.gh.gamecenter.entity.HomePluggableFilterEntity import com.gh.gamecenter.entity.PluginLocation import com.gh.gamecenter.eventbus.EBDownloadChanged import com.gh.gamecenter.eventbus.EBMiPush @@ -42,10 +44,13 @@ class DownloadFragment : BaseFragment_TabLayout() { private lateinit var mUpdateNumber: TextView private lateinit var mDownloadManager: DownloadManager + private var mPermanentInactivePluggableApkList: List? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mDownloadManager = DownloadManager.getInstance(HaloApp.getInstance().application) + mPermanentInactivePluggableApkList = HomePluggableHelper.getPermanentInactivePluggablePackage() } override fun initFragmentList(fragments: MutableList) { @@ -190,7 +195,11 @@ class DownloadFragment : BaseFragment_TabLayout() { return } - val updateCount = mDownloadManager.getUnreadUpdateCount(PackagesManager.getUpdateList().filter { it.isShowPlugin(PluginLocation.only_index) }) + val updateCount = mDownloadManager.getUnreadUpdateCount(PackagesManager.getUpdateList() + .filter { gameUpdateEntity -> + gameUpdateEntity.isShowPlugin(PluginLocation.only_index) + && mPermanentInactivePluggableApkList?.filter { it.pkgName == gameUpdateEntity.packageName }?.size == 0 + }) mUpdateNumber.visibleIf(updateCount != 0) } diff --git a/app/src/main/java/com/gh/gamecenter/room/dao/HomePluggableFilterDao.kt b/app/src/main/java/com/gh/gamecenter/room/dao/HomePluggableFilterDao.kt index 919a05fcc4..2ff1fb94ea 100644 --- a/app/src/main/java/com/gh/gamecenter/room/dao/HomePluggableFilterDao.kt +++ b/app/src/main/java/com/gh/gamecenter/room/dao/HomePluggableFilterDao.kt @@ -15,6 +15,9 @@ interface HomePluggableFilterDao { @Query("select * from HomePluggableFilterEntity where active = :active") fun getDataByActive(active: Boolean): List? + @Query("select * from HomePluggableFilterEntity where tag = :tag") + fun getDataByTag(tag: String): List? + @Query("select * from HomePluggableFilterEntity where pkgName = :pkgName") fun getDataByPkgName(pkgName: String?): HomePluggableFilterEntity?