From e3c140e5fd08e50516f4a21a98d5a8345aad3389 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Tue, 11 Oct 2022 14:54:32 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E3=80=90=E5=85=89=E7=8E=AF?= =?UTF-8?q?=E5=8A=A9=E6=89=8BV5.15.0=E3=80=91=E5=89=8D=E7=AB=AF=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=B1=87=E6=80=BB10=E6=9C=88=E7=AC=AC1=E5=91=A8(14,?= =?UTF-8?q?=2015)=20https://git.shanqu.cc/pm/halo/halo-app-issues/-/issues?= =?UTF-8?q?/2114#note=5F172887?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simulator/SimulatorDownloadManager.kt | 89 ++++++++++--------- .../com/gh/gamecenter/SplashScreenActivity.kt | 9 +- .../common/utils/PermissionHelper.kt | 5 +- 3 files changed, 53 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt index 4ac8603d0e..f2738b1f95 100644 --- a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt +++ b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt @@ -18,10 +18,7 @@ import com.gh.gamecenter.common.base.TrackableDialog import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.AppExecutor.uiExecutor -import com.gh.gamecenter.core.utils.DisplayUtils -import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.core.utils.SpeedUtils -import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.entity.ApkEntity import com.gh.gamecenter.entity.SimulatorEntity import com.gh.gamecenter.entity.TrackableEntity @@ -118,53 +115,59 @@ class SimulatorDownloadManager private constructor() { fun showDownloadDialog(context: Context?, simulator: SimulatorEntity?, location: SimulatorLocation, gameId: String = "", gameName: String = "", cancelCallback: (() -> Unit)? = null) { if (context == null) return + mContextRef = WeakReference(context) this.simulatorLocation = location this.simulator = simulator this.gameId = gameId this.gameName = gameName - //判断是否隐藏 - if (simulator?.active == false) { - showNoneEmulatorDialog(context) - return - } - val isInstalled = PackageUtils.isInstalledFromAllPackage(context, simulator?.apk?.packageName) - val versionFromInstalledApp = PackageUtils.getVersionNameByPackageName(simulator?.apk?.packageName) - val shouldShowUpdate = Version(simulator?.apk?.version).isHigherThan(versionFromInstalledApp) - val title = if (shouldShowUpdate && isInstalled) "更新模拟器" else "安装模拟器" - val message = if (shouldShowUpdate && isInstalled) "检测到模拟器存在更高版本,是否前往更新" else "模拟器游戏需要先下载安装对应的模拟器,才可以运行" - val positiveText = if (shouldShowUpdate && isInstalled) "更新(${simulator?.apk?.size})" else "下载(${simulator?.apk?.size})" - val negativeText = if (shouldShowUpdate && isInstalled) "下次再说" else "取消" - downloadType = if (shouldShowUpdate && isInstalled) "update" else "download" - val trackableEntity = TrackableEntity("模拟器下载", - key = if (shouldShowUpdate && isInstalled) "更新弹窗" else "下载弹窗", - logShowEvent = true - ) - DialogHelper.showDialog( - context, - title, - message, - positiveText, - negativeText, - trackMtaEvent = true, - cancelClickCallback = { - if (shouldShowUpdate && isInstalled) { - cancelCallback?.invoke() - MtaHelper.onEvent(trackableEntity.event, trackableEntity.key, "点击下次再说") + PermissionHelper.checkGetInstalledAppsListBeforeAction(context, object : EmptyCallback { + override fun onCallback() { + //判断是否隐藏 + if (simulator?.active == false) { + showNoneEmulatorDialog(context) + return } - }, - confirmClickCallback = { - showDownloadingDialog(context, simulator) - MtaHelper.onEvent( - trackableEntity.event, - trackableEntity.key, - if (shouldShowUpdate && isInstalled) "点击更新" else "点击下载" + val isInstalled = PackageUtils.isInstalledFromAllPackage(context, simulator?.apk?.packageName) + val versionFromInstalledApp = PackageUtils.getVersionNameByPackageName(simulator?.apk?.packageName) + val shouldShowUpdate = Version(simulator?.apk?.version).isHigherThan(versionFromInstalledApp) + val title = if (shouldShowUpdate && isInstalled) "更新模拟器" else "安装模拟器" + val message = if (shouldShowUpdate && isInstalled) "检测到模拟器存在更高版本,是否前往更新" else "模拟器游戏需要先下载安装对应的模拟器,才可以运行" + val positiveText = if (shouldShowUpdate && isInstalled) "更新(${simulator?.apk?.size})" else "下载(${simulator?.apk?.size})" + val negativeText = if (shouldShowUpdate && isInstalled) "下次再说" else "取消" + downloadType = if (shouldShowUpdate && isInstalled) "update" else "download" + + val trackableEntity = TrackableEntity("模拟器下载", + key = if (shouldShowUpdate && isInstalled) "更新弹窗" else "下载弹窗", + logShowEvent = true ) - }, - mtaEvent = trackableEntity.event, mtaKey = trackableEntity.key, - extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) - ) + DialogHelper.showDialog( + context, + title, + message, + positiveText, + negativeText, + trackMtaEvent = true, + cancelClickCallback = { + if (shouldShowUpdate && isInstalled) { + cancelCallback?.invoke() + MtaHelper.onEvent(trackableEntity.event, trackableEntity.key, "点击下次再说") + } + }, + confirmClickCallback = { + showDownloadingDialog(context, simulator) + MtaHelper.onEvent( + trackableEntity.event, + trackableEntity.key, + if (shouldShowUpdate && isInstalled) "点击更新" else "点击下载" + ) + }, + mtaEvent = trackableEntity.event, mtaKey = trackableEntity.key, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) + } + }) } private fun showDownloadingDialog(context: Context, simulator: SimulatorEntity?) { diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt index 42d799eb14..db6a911643 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt @@ -1,6 +1,5 @@ package com.gh.gamecenter -import android.Manifest import android.content.Context import android.content.Intent import android.content.SharedPreferences @@ -57,8 +56,6 @@ class SplashScreenActivity : BaseActivity() { private var mViewModel: SplashScreenViewModel? = null private val mPermissions = arrayOf( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.READ_EXTERNAL_STORAGE, PermissionHelper.PERMISSION_GET_INSTALLED_LIST ) @@ -150,6 +147,8 @@ class SplashScreenActivity : BaseActivity() { // 恢复畅玩数据 VHelper.recoverVDataIfPossible() + requestPermission() + // 检查是否有旧版本光环,有就删掉 AppExecutor.ioExecutor.execute { deleteOutdatedUpdatePackage() } if (mStartMainActivityDirectly) { @@ -295,10 +294,10 @@ class SplashScreenActivity : BaseActivity() { private fun checkAndRequestPermission() { if (EasyPermissions.hasPermissions(this, *mPermissions)) { // 恢复畅玩数据 - VHelper.recoverVDataIfPossible() +// VHelper.recoverVDataIfPossible() // 检查是否有旧版本光环,有就删掉 - AppExecutor.ioExecutor.execute { deleteOutdatedUpdatePackage() } +// AppExecutor.ioExecutor.execute { deleteOutdatedUpdatePackage() } if (mStartMainActivityDirectly) { launchMainActivity() } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt index 695cd6f2b3..a17c8ee9ec 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt @@ -10,6 +10,7 @@ import android.content.pm.PermissionInfo import android.net.Uri import android.os.Build import android.provider.Settings +import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.fragment.app.FragmentActivity import com.alibaba.android.arouter.launcher.ARouter @@ -34,10 +35,10 @@ object PermissionHelper { @SuppressLint("CheckResult") @JvmStatic fun checkGetInstalledAppsListBeforeAction( - context: FragmentActivity, + context: Context, emptyCallback: EmptyCallback ) { - if (isGetInstalledListPermissionDisabled(context)) { + if (context is AppCompatActivity && isGetInstalledListPermissionDisabled(context)) { showDialogBeforeRequestingGetInstalledListDialog(context, emptyCallback) } else { emptyCallback.onCallback() From ccc97a93da7154c8c728d3b4324eb7b2c1d4c1de Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Tue, 11 Oct 2022 15:38:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E6=9D=83=E9=99=90=E5=90=8E=20gid=20=E5=B9=B6?= =?UTF-8?q?=E6=9C=AA=E5=90=8C=E6=97=B6=E6=9B=B4=E6=96=B0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/common/provider/AppProviderImpl.kt | 4 ++++ app/src/main/java/com/halo/assistant/HaloApp.java | 4 ++++ .../java/com/gh/gamecenter/common/utils/PermissionHelper.kt | 4 ++++ .../main/java/com/gh/gamecenter/core/provider/IAppProvider.kt | 2 ++ 4 files changed, 14 insertions(+) diff --git a/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt b/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt index c6b3069776..74f8c677c0 100644 --- a/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt @@ -21,6 +21,10 @@ class AppProviderImpl : IAppProvider { return HaloApp.getInstance().gid ?: "" } + override fun refreshGid() { + HaloApp.getInstance().refreshGid() + } + override fun getOaid(): String { return HaloApp.getInstance().oaid ?: "" } diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index cdd84a74ed..bef02c1c54 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -120,6 +120,10 @@ public class HaloApp extends MultiDexApplication { return mGid; } + public void refreshGid() { + DataUtils.getGid(); + } + public void setLocalTemporaryDeviceId(String key) { mTemporaryLocalDeviceId = key; } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt index a17c8ee9ec..6cbe6c7f85 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt @@ -18,6 +18,7 @@ import com.gh.gamecenter.common.R import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IActivationProvider +import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IDirectProvider import com.gh.gamecenter.core.utils.EmptyCallback import com.gh.gamecenter.core.utils.SPUtils @@ -98,6 +99,9 @@ object PermissionHelper { permission.granted -> { emptyCallback.onCallback() SPUtils.setBoolean(Constants.SP_USER_HAS_PERMANENTLY_DENIED_STORAGE_PERMISSION, false) + + // 获得存储权限后刷新 gid 避免下载仍需实名 + (ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider)?.refreshGid() } permission.shouldShowRequestPermissionRationale -> { // do nothing diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt index ff25eb4c4d..1b66c4272c 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt @@ -8,6 +8,8 @@ interface IAppProvider : IProvider { fun getGid():String + fun refreshGid() + fun getOaid():String fun getChannel():String From 2367a0bf8af729615db46effe7afc791d6990544 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 12 Oct 2022 10:51:00 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=8C=E5=88=97?= =?UTF-8?q?=E4=B8=93=E9=A2=98=E8=B7=B3=E8=BD=AC=E6=B8=B8=E6=88=8F=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=97=A0=E6=B3=95=E4=B8=8B=E8=BD=BD=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gamecenter/game/doublecard/DoubleCardListAdapter.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt index a71b3b0fb8..9ae6d78a40 100644 --- a/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt @@ -5,10 +5,13 @@ import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.view.ViewGroup import com.gh.common.exposure.ExposureEvent -import com.gh.gamecenter.core.utils.StringUtils import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.common.base.BaseRecyclerViewHolder -import com.gh.gamecenter.common.utils.* +import com.gh.gamecenter.common.utils.dip2px +import com.gh.gamecenter.common.utils.display +import com.gh.gamecenter.common.utils.goneIf +import com.gh.gamecenter.common.utils.toBinding +import com.gh.gamecenter.core.utils.StringUtils import com.gh.gamecenter.databinding.GameDoubleCardItemBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectEntity @@ -64,7 +67,7 @@ class DoubleCardListAdapter( root.setOnClickListener { GameDetailActivity.startGameDetailActivity( mContext, - gameEntity, + gameEntity.id, StringUtils.buildString("(游戏-专题:", mSubjectEntity.name, "-列表[", (position + 1).toString(), "])"), traceEvent = exposureEventList?.get(position) )