From d7e88ba38af59d0a3d9e8ca9b3accbcddfce95f4 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Thu, 4 Jan 2024 11:42:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20V5.32.8=E5=8D=8E=E4=B8=BA=E9=B8=BF?= =?UTF-8?q?=E8=92=99=E7=B3=BB=E7=BB=9F-=E6=A8=A1=E6=8B=9F=E5=99=A8?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E9=97=AE=E9=A2=98=20https://jira.shanqu.cc/b?= =?UTF-8?q?rowse/GHZS-4487?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simulator/SimulatorDownloadManager.kt | 12 +---- libraries/LGLibrary | 2 +- .../common/utils/PermissionHelper.kt | 50 ++++++++++++++++++- 3 files changed, 52 insertions(+), 12 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 d770a02c86..a4a274a7d9 100644 --- a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt +++ b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt @@ -167,7 +167,7 @@ class SimulatorDownloadManager private constructor() { this.gameName = gameName this.gameType = gameCategoryChinese - val callback = object : EmptyCallback { + PermissionHelper.checkGetInstalledAppsListBeforeAction(context, object : EmptyCallback { override fun onCallback() { val isInstalledNewSimulator = SimulatorGameManager.isNewSimulatorInstalled(HaloApp.getInstance().application) @@ -322,15 +322,7 @@ class SimulatorDownloadManager private constructor() { SPUtils.setString(SimulatorGameManager.SIMULATOR_UPDATE_SHOW_ALERT_TAG, TimeUtils.getToday()) } } - } - - if (context is AppCompatActivity - && PackageUtils.isSupportGetInstalledAppsPermission(context) - && PermissionHelper.isGetInstalledListPermissionDisabled(context)) { - PermissionHelper.requestGetInstalledAppsListPermission(context, false, callback) - } else { - callback.onCallback() - } + }) } fun showDownloadingDialog( diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 2f765e072e..096c423854 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 2f765e072e8d0daeff48ee45a9feb8815a4cdf68 +Subproject commit 096c42385462fc7985e9f5ad722b72c2252d589d 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 ad73ef767a..6c8aa0bd83 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,11 @@ import android.text.Spanned import android.view.Gravity import android.view.LayoutInflater import android.view.Window +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.content.res.AppCompatResources +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat import androidx.fragment.app.FragmentActivity import com.alibaba.android.arouter.launcher.ARouter import com.gh.gamecenter.common.R @@ -27,18 +32,20 @@ import com.gh.gamecenter.common.databinding.DialogExternalStoragePermissionIntro import com.gh.gamecenter.common.view.ImprovedBulletSpan import com.gh.gamecenter.core.AppExecutor 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 import com.lightgame.utils.AppManager import com.tbruyelle.rxpermissions2.RxPermissions - object PermissionHelper { const val INSTALL_PERMISSION_CODE = 100 private const val PERMISSION_GET_INSTALLED_LIST = "com.android.permission.GET_INSTALLED_APPS" + private const val HINT_CHECK_USAGE = "查看权限应用场景 " + /** * 请求获取已安装列表权限 */ @@ -324,6 +331,47 @@ object PermissionHelper { } } + /** + * 在执行 emptyCallback 的 action 前先判断是否有获取已安装列表的权限 + */ + @SuppressLint("CheckResult") + @JvmStatic + fun checkGetInstalledAppsListBeforeAction( + context: Context, + emptyCallback: EmptyCallback + ) { + if (context is AppCompatActivity && isGetInstalledListPermissionDisabled(context)) { + showDialogBeforeRequestingGetInstalledListDialog(context, emptyCallback) + } else { + emptyCallback.onCallback() + } + } + + private fun showDialogBeforeRequestingGetInstalledListDialog( + context: FragmentActivity, + emptyCallback: EmptyCallback + ) { + DialogHelper.showDialog( + context, + title = "权限申请", + content = "光环助手将向您申请开启设备的应用列表权限,以保证能正常使用相关功能。拒绝授权将无法正常使用部分功能。", + cancelText = "放弃", + confirmText = "去授权", + cancelClickCallback = null, + confirmClickCallback = { requestGetInstalledAppsListPermission(context, false, emptyCallback) }, + extraConfig = DialogHelper.Config(hint = HINT_CHECK_USAGE), + uiModificationCallback = { + it.hintTv.setTextColor(ContextCompat.getColor(context, R.color.text_theme)) + it.hintTv.setOnClickListener { + val provider = + ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + provider?.directToWebView(context, Constants.PERMISSION_SCENARIO_ADDRESS, "(权限弹窗)") + } + it.contentTv.setTextColor(ContextCompat.getColor(context, R.color.text_primary)) + } + ) + } + /** * 检查添加到桌面快捷方式权限 */