From d494957880171adb87e90bd7e3b6b461038f161a Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 28 Sep 2022 14:42:12 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E7=A7=BB=E9=99=A4=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E6=97=B6=E7=9A=84=E6=9D=83=E9=99=90=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=EF=BC=8C=E7=A7=BB=E9=99=A4=E8=AF=BB=E5=8F=96=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 6 +- .../com/gh/common/util/QuickLoginHelper.kt | 50 ++++---- .../com/gh/gamecenter/SplashScreenActivity.kt | 46 +++++--- .../gh/gamecenter/fragment/LoginFragment.java | 18 +-- module_common/src/main/AndroidManifest.xml | 2 - .../common/exposure/meta/MetaUtil.kt | 104 +++++++++-------- .../common/utils/PermissionHelper.kt | 110 +++++------------- 7 files changed, 152 insertions(+), 184 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7244e45ff1..25cd312edf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,8 +16,6 @@ - - @@ -62,6 +60,10 @@ android:name="android.permission.READ_CONTACTS" tools:node="remove" /> + + if (isSuccess) { - val callback = object : SimpleCallback { - override fun onCallback(arg: Boolean) { - // Dialog dismiss 后的回调 - guideLayout.visibility = View.VISIBLE - SPUtils.setBoolean(Constants.SP_BRAND_NEW_USER, false) - if (arg) { - requestPermission() - } else { - mStartMainActivityDirectly = false - } - } + guideLayout.visibility = View.VISIBLE + SPUtils.setBoolean(Constants.SP_BRAND_NEW_USER, false) + + // 恢复畅玩数据 + VHelper.recoverVDataIfPossible() + + // 检查是否有旧版本光环,有就删掉 + AppExecutor.ioExecutor.execute { deleteOutdatedUpdatePackage() } + if (mStartMainActivityDirectly) { + launchMainActivity() } - mViewModel?.showPrivacyPolicy({ - DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, it, callback) - }, { - DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, PrivacyPolicyEntity.createDefaultData(), callback) - }) +// val callback = object : SimpleCallback { +// override fun onCallback(arg: Boolean) { +// // Dialog dismiss 后的回调 +// guideLayout.visibility = View.VISIBLE +// SPUtils.setBoolean(Constants.SP_BRAND_NEW_USER, false) +// if (arg) { +// requestPermission() +// } else { +// mStartMainActivityDirectly = false +// } +// } +// } +// +// mViewModel?.showPrivacyPolicy({ +// DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, it, callback) +// }, { +// DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, PrivacyPolicyEntity.createDefaultData(), callback) +// }) } else { DialogUtils.showPrivacyPolicyDisallowDialog(this, PrivacyPolicyEntity.createDefaultData(), object : EmptyCallback { diff --git a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java index b82a1adc79..458ca28ec0 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java @@ -282,16 +282,16 @@ public class LoginFragment } private void showPermissionDialog() { - if (requireContext().checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { +// if (requireContext().checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { startQuickLogin(); - } else { - DialogUtils.showQuickLoginPermissionDialog( - requireContext(), - () -> PermissionHelper.checkReadPhoneStatePermissionBeforeAction(requireContext(), this::startQuickLogin), - () -> { - } - ); - } +// } else { +// DialogUtils.showQuickLoginPermissionDialog( +// requireContext(), +// () -> PermissionHelper.checkReadPhoneStatePermissionBeforeAction(requireContext(), this::startQuickLogin), +// () -> { +// } +// ); +// } } private void startQuickLogin() { diff --git a/module_common/src/main/AndroidManifest.xml b/module_common/src/main/AndroidManifest.xml index f17b266c8e..527cffd451 100644 --- a/module_common/src/main/AndroidManifest.xml +++ b/module_common/src/main/AndroidManifest.xml @@ -3,8 +3,6 @@ package="com.gh.gamecenter.common"> - - \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt index c551e3e2e0..ea0f08a724 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt @@ -82,62 +82,64 @@ object MetaUtil { */ @JvmStatic fun getIMEI(): String { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider - if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) { - return "" - } - - if (imei != null) { - return imei ?: "" - } - - imei = SPUtils.getString(Constants.SP_IMEI) - - if (!TextUtils.isEmpty(imei)) { - return imei ?: "" - } - - if (application.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { - return "" - } - - val telephonyManager = application.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager - - if (Build.VERSION.SDK_INT >= 29) { - return "".apply { - imei = this - SPUtils.setString(Constants.SP_IMEI, this) - } - } else if (Build.VERSION.SDK_INT >= 26) { - return (telephonyManager.imei ?: "").apply { - imei = this - SPUtils.setString(Constants.SP_IMEI, this) - } - } - - return (telephonyManager.getDeviceId() ?: "").apply { - imei = this - SPUtils.setString(Constants.SP_IMEI, this) - } + return "" +// val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider +// if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) { +// return "" +// } +// +// if (imei != null) { +// return imei ?: "" +// } +// +// imei = SPUtils.getString(Constants.SP_IMEI) +// +// if (!TextUtils.isEmpty(imei)) { +// return imei ?: "" +// } +// +// if (application.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { +// return "" +// } +// +// val telephonyManager = application.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager +// +// if (Build.VERSION.SDK_INT >= 29) { +// return "".apply { +// imei = this +// SPUtils.setString(Constants.SP_IMEI, this) +// } +// } else if (Build.VERSION.SDK_INT >= 26) { +// return (telephonyManager.imei ?: "").apply { +// imei = this +// SPUtils.setString(Constants.SP_IMEI, this) +// } +// } +// +// return (telephonyManager.getDeviceId() ?: "").apply { +// imei = this +// SPUtils.setString(Constants.SP_IMEI, this) +// } } @JvmStatic fun getBase64EncodedIMEI(): String { - if (imei == null) { - getIMEI() - } - - if (TextUtils.isEmpty(base64EncodedImei) && imei != null) { - try { - base64EncodedImei = android.util.Base64.encodeToString(getIMEI().trim().toByteArray(), android.util.Base64.NO_WRAP) - } catch (e: java.lang.Exception) { - e.printStackTrace() - return "" - } - } - - return base64EncodedImei ?: "" + return "" +// if (imei == null) { +// getIMEI() +// } +// +// if (TextUtils.isEmpty(base64EncodedImei) && imei != null) { +// try { +// base64EncodedImei = android.util.Base64.encodeToString(getIMEI().trim().toByteArray(), android.util.Base64.NO_WRAP) +// } catch (e: java.lang.Exception) { +// e.printStackTrace() +// return "" +// } +// } +// +// return base64EncodedImei ?: "" } @JvmStatic 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 abd43a0728..695cd6f2b3 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 @@ -19,7 +19,6 @@ import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IActivationProvider import com.gh.gamecenter.core.provider.IDirectProvider import com.gh.gamecenter.core.utils.EmptyCallback -import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.core.utils.SPUtils import com.tbruyelle.rxpermissions2.RxPermissions @@ -29,50 +28,6 @@ object PermissionHelper { const val PERMISSION_GET_INSTALLED_LIST = "com.android.permission.GET_INSTALLED_APPS" - @SuppressLint("CheckResult") - @JvmStatic - fun requestReadPhoneStateAndStoragePermissionFromStartUp(context: Context) { - if (context is FragmentActivity) { - val rxPermission = RxPermissions(context) - - var requestCount = 0 - val permissionsStatusMap = hashMapOf() - permissionsStatusMap[Manifest.permission.READ_PHONE_STATE] = false - permissionsStatusMap[Manifest.permission.READ_EXTERNAL_STORAGE] = false - permissionsStatusMap[Manifest.permission.WRITE_EXTERNAL_STORAGE] = false - - tryWithDefaultCatch { - rxPermission - .requestEach( - Manifest.permission.READ_PHONE_STATE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.READ_EXTERNAL_STORAGE - ) - .subscribe { permission -> - requestCount++ - permissionsStatusMap[permission.name] = permission.granted - - if (requestCount == 2) { - val hasReadPhoneStatePermission = permissionsStatusMap[Manifest.permission.READ_PHONE_STATE] == true - val hasReadStoragePermission = permissionsStatusMap[Manifest.permission.READ_EXTERNAL_STORAGE] == true - - if (hasReadPhoneStatePermission && hasReadStoragePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "都授权") - } else if (!hasReadPhoneStatePermission && !hasReadStoragePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "都不授权") - } else if (hasReadPhoneStatePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "只授权IMEI") - } else if (hasReadStoragePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "只授权存储") - } - } - } - } - - } - } - - /** * 在执行 emptyCallback 的 action 前先判断是否有获取已安装列表的权限 */ @@ -164,8 +119,7 @@ object PermissionHelper { @JvmStatic fun checkReadPhoneStateAndStoragePermissionBeforeAction(context: Context, emptyCallback: EmptyCallback) { if (context is FragmentActivity) { - if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED - && context.checkCallingOrSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED + if (context.checkCallingOrSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && context.checkCallingOrSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED ) { emptyCallback.onCallback() @@ -175,7 +129,6 @@ object PermissionHelper { tryWithDefaultCatch { rxPermission .requestEachCombined( - Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE ) @@ -205,36 +158,37 @@ object PermissionHelper { @SuppressLint("CheckResult") @JvmStatic fun checkReadPhoneStatePermissionBeforeAction(context: Context, emptyCallback: EmptyCallback) { - if (context is FragmentActivity) { - - if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { - emptyCallback.onCallback() - } else { - val rxPermission = RxPermissions(context) - - tryWithDefaultCatch { - rxPermission - .requestEachCombined(Manifest.permission.READ_PHONE_STATE) - .subscribe { permission -> - when { - permission.granted -> { - emptyCallback.onCallback() - val provider = ARouter.getInstance().build(RouteConsts.provider.activation).navigation() as? IActivationProvider - provider?.sendActivationInfo() - } - permission.shouldShowRequestPermissionRationale -> { - // do nothing - } - else -> { - val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) - intent.data = Uri.parse("package:" + context.getPackageName()) - context.startActivity(intent) - } - } - } - } - } - } + emptyCallback.onCallback() +// if (context is FragmentActivity) { +// +// if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { +// emptyCallback.onCallback() +// } else { +// val rxPermission = RxPermissions(context) +// +// tryWithDefaultCatch { +// rxPermission +// .requestEachCombined(Manifest.permission.READ_PHONE_STATE) +// .subscribe { permission -> +// when { +// permission.granted -> { +// emptyCallback.onCallback() +// val provider = ARouter.getInstance().build(RouteConsts.provider.activation).navigation() as? IActivationProvider +// provider?.sendActivationInfo() +// } +// permission.shouldShowRequestPermissionRationale -> { +// // do nothing +// } +// else -> { +// val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) +// intent.data = Uri.parse("package:" + context.getPackageName()) +// context.startActivity(intent) +// } +// } +// } +// } +// } +// } } /** From faffbbfa87d6ed2a5d428ca3c8a5a2d77cbcdb10 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 28 Sep 2022 14:45:39 +0800 Subject: [PATCH 2/5] =?UTF-8?q?chore:=20=E7=89=88=E6=9C=AC=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=87=B3=205.12.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dependencies.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 27f1bb0efe..6e16006792 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,8 +7,8 @@ ext { targetSdkVersion = 28 // application info (每个大版本之间的 versionCode 增加 20) - versionCode = 597 - versionName = "5.12.7" + versionCode = 598 + versionName = "5.12.8" applicationId = "com.gh.gamecenter" // AndroidX From 13e9ba4f4896894d672d7709f298bd5483024960 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 28 Sep 2022 21:00:03 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=20android.permiss?= =?UTF-8?q?ion.GET=5FTASKS=20=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 6 +- .../java/com/gh/common/util/DataUtils.java | 3 +- .../java/com/gh/common/util/DirectUtils.kt | 17 +-- .../com/gh/common/util/EntranceUtils.java | 9 +- .../java/com/gh/common/util/PackageUtils.java | 29 ++-- .../java/com/gh/gamecenter/SkipActivity.java | 9 +- .../gamedetail/desc/DescFragment.kt | 3 +- .../receiver/ActivitySkipReceiver.java | 4 +- .../gamecenter/receiver/InstallReceiver.java | 7 +- module_common/src/main/AndroidManifest.xml | 2 - .../common/base/activity/BaseActivity.java | 5 +- .../common/eventbus/EBShowDialog.java | 9 ++ .../gamecenter/core/utils/RunningUtils.java | 132 ------------------ 13 files changed, 52 insertions(+), 183 deletions(-) delete mode 100644 module_core/src/main/java/com/gh/gamecenter/core/utils/RunningUtils.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25cd312edf..06fa49ba0b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,8 +16,6 @@ - - @@ -64,6 +62,10 @@ android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> + + { diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index e6a5095835..ad16b7a1dd 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -31,7 +31,6 @@ import com.gh.gamecenter.common.constant.EntranceConsts.* import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.AppExecutor -import com.gh.gamecenter.core.utils.RunningUtils import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.download.DownloadFragment.Companion.INDEX_UPDATE import com.gh.gamecenter.entity.* @@ -1328,9 +1327,7 @@ object DirectUtils { */ @JvmStatic fun directToHomeTab(context: Context) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) @@ -1351,9 +1348,7 @@ object DirectUtils { */ @JvmStatic fun directToForum(context: Context, position: Int = 0) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) @@ -1376,9 +1371,7 @@ object DirectUtils { */ @JvmStatic fun directToVideoTab(context: Context) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) @@ -1397,9 +1390,7 @@ object DirectUtils { */ @JvmStatic fun directToPersonalTab(context: Context) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 451a4e0d47..bb3a0033db 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -25,7 +25,6 @@ import com.gh.gamecenter.common.base.fragment.ToolbarFragment; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.core.utils.ClassUtils; import com.gh.gamecenter.core.utils.GsonUtils; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.core.utils.SPUtils; import com.halo.assistant.HaloApp; import com.lightgame.utils.Utils; @@ -41,9 +40,7 @@ public class EntranceUtils { public static void jumpActivity(Context context, Bundle bundle) { bundle.putBoolean(KEY_REQUIRE_REDIRECT, true); - //TODO 把其他类似的跳转启动逻辑也处理掉 - if (RunningUtils.isRunning(context) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(context))) { + if (HaloApp.getInstance().isRunningForeground) { // 应用正在运行,前台或后台 String to = bundle.getString(KEY_TO); Class clazz = ClassUtils.forName(to); @@ -69,9 +66,7 @@ public class EntranceUtils { public static void jumpActivity(Context context, Bundle nextToBundle, Bundle bundle, Callback callback) { bundle.putBoolean(KEY_REQUIRE_REDIRECT, true); - //TODO 把其他类似的跳转启动逻辑也处理掉 - if (RunningUtils.isRunning(context) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(context))) { + if (HaloApp.getInstance().isRunningForeground) { // 应用正在运行,前台或后台 String to = bundle.getString(KEY_TO); Class clazz = ClassUtils.forName(to); 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 b053bab97f..3807806137 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -26,6 +26,7 @@ import com.gh.download.DownloadManager; import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.utils.ExtensionsKt; +import com.gh.gamecenter.common.utils.PackageFlavorHelper; import com.gh.gamecenter.core.utils.SentryHelper; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; @@ -811,21 +812,25 @@ public class PackageUtils { * @return 进程名 */ public static String obtainProcessName(Context context) { - try { - final int pid = android.os.Process.myPid(); - ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List listTaskInfo = am.getRunningAppProcesses(); - if (listTaskInfo != null && !listTaskInfo.isEmpty()) { - for (ActivityManager.RunningAppProcessInfo info : listTaskInfo) { - if (info != null && info.pid == pid) { - return info.processName; + if (PackageFlavorHelper.IS_TEST_FLAVOR) { + try { + final int pid = android.os.Process.myPid(); + ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + List listTaskInfo = am.getRunningAppProcesses(); + if (listTaskInfo != null && !listTaskInfo.isEmpty()) { + for (ActivityManager.RunningAppProcessInfo info : listTaskInfo) { + if (info != null && info.pid == pid) { + return info.processName; + } } } + } catch (Exception e) { + // 遇到异常了让这次调用正常执行 + e.printStackTrace(); + return BuildConfig.APPLICATION_ID; } - } catch (Exception e) { - // 遇到异常了让这次调用正常执行 - e.printStackTrace(); - return BuildConfig.APPLICATION_ID; + } else { + return null; } return null; } diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 35846ca5a2..0f659feb65 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -52,8 +52,8 @@ import com.gh.common.util.DirectUtils; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.common.util.EntranceUtils; import com.gh.common.util.PlatformUtils; +import com.gh.gamecenter.core.utils.CurrentActivityHolder; import com.gh.gamecenter.core.utils.GsonUtils; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.entity.CommunityEntity; import com.gh.gamecenter.entity.LinkEntity; import com.gh.gamecenter.entity.SimpleGameEntity; @@ -62,6 +62,7 @@ import com.gh.gamecenter.entity.VideoLinkEntity; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; import com.gh.gamecenter.video.videomanager.VideoManagerActivity; +import com.halo.assistant.HaloApp; import com.lightgame.config.CommonDebug; import com.lightgame.utils.Utils; @@ -157,8 +158,7 @@ public class SkipActivity extends BaseActivity { case HOST_COMMUNITY: UserManager.getInstance().setCommunityData(new CommunityEntity(path, name)); // 把切换放到 MainActivity 处理 - if (RunningUtils.isRunning(this) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(this))) { + if (HaloApp.getInstance().isRunningForeground) { intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(MainActivity.SWITCH_TO_COMMUNITY, true); @@ -241,8 +241,7 @@ public class SkipActivity extends BaseActivity { break; case HOST_VIDEO_STREAMING_HOME: // 把切换放到 MainActivity 处理 - if (RunningUtils.isRunning(this) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(this))) { + if (HaloApp.getInstance().isRunningForeground) { intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(MainActivity.SWITCH_TO_VIDEO, true); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt index 679fa5e95f..0b5190911c 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt @@ -22,7 +22,6 @@ import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.gamecenter.common.utils.viewModelProviderFromParent import com.gh.gamecenter.core.iinterface.IScrollable import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.core.utils.RunningUtils import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentDescBinding import com.gh.gamecenter.entity.GameEntity @@ -117,7 +116,7 @@ class DescFragment : BaseFragment(), IScrollable { } if (openVideoStreaming) { gameDetail.data.detailEntity.forEach { entity -> - if (entity.video != null && !RunningUtils.isEqualsTop(context, VideoDetailActivity::class.java.name)) { + if (entity.video != null && activity !is VideoDetailActivity) { DirectUtils.directToVideoDetail( requireContext(), entity.video!![0].videoId, entity.video!![0].videoId, path = "游戏详情-介绍视频" ) diff --git a/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java index 07dd8b92c4..1f4e818e76 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java @@ -8,8 +8,8 @@ import android.text.TextUtils; import com.gh.gamecenter.core.utils.ClassUtils; import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.SplashScreenActivity; +import com.halo.assistant.HaloApp; /** * Created by khy on 2016/9/1. @@ -24,7 +24,7 @@ public class ActivitySkipReceiver extends BroadcastReceiver { ExtensionsKt.doOnMainProcessOnly(context, () -> { if (ACTION_ACTIVITY_SKIP.equals(intent.getAction())) { Bundle bundle = intent.getExtras(); - if (RunningUtils.isRunning(context) && bundle != null) { + if (HaloApp.getInstance().isRunningForeground && bundle != null) { // 应用正在运行,前台或后台 String to = bundle.getString("to"); if (!TextUtils.isEmpty(to)) { diff --git a/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java index 8e8824fcfd..36ff960019 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java @@ -18,8 +18,9 @@ import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.eventbus.EBMiPush; import com.gh.gamecenter.common.utils.ExtensionsKt; +import com.gh.gamecenter.core.utils.CurrentActivityHolder; import com.gh.gamecenter.core.utils.GsonUtils; -import com.gh.gamecenter.core.utils.RunningUtils; +import com.halo.assistant.HaloApp; import com.lightgame.download.DownloadEntity; import org.greenrobot.eventbus.EventBus; @@ -51,8 +52,8 @@ public class InstallReceiver extends BroadcastReceiver { PackageInstaller.install(context, false, path); } } else { - if (RunningUtils.isRunning(context)) { - if (RunningUtils.isEqualsTop(context, DownloadManagerActivity.class.getName())) { + if (HaloApp.getInstance().isRunningForeground) { + if (CurrentActivityHolder.getCurrentActivity() instanceof DownloadManagerActivity) { // 这里是指从后台返回到前台 前两个的是关键 Intent intent2 = new Intent(); intent2.setAction(Intent.ACTION_MAIN); diff --git a/module_common/src/main/AndroidManifest.xml b/module_common/src/main/AndroidManifest.xml index 527cffd451..3a57e781f3 100644 --- a/module_common/src/main/AndroidManifest.xml +++ b/module_common/src/main/AndroidManifest.xml @@ -3,6 +3,4 @@ package="com.gh.gamecenter.common"> - - \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java index 1b2667dd40..2f82260183 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java @@ -61,7 +61,6 @@ import com.gh.gamecenter.core.provider.IPackageInstallerProvider; import com.gh.gamecenter.core.provider.IQuickLoginProvider; import com.gh.gamecenter.core.utils.DisplayUtils; import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.core.utils.SPUtils; import com.gh.gamecenter.core.utils.StringUtils; import com.lightgame.BaseAppCompatActivity; @@ -350,8 +349,10 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(final EBShowDialog showDialog) { + // 当当前实体被标记为使用过以后,不再响应它的内容 if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED) - && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { + && !showDialog.isUsed()) { + showDialog.setUsed(true); IPackageInstallerProvider packageInstallerConfig = (IPackageInstallerProvider) ARouter.getInstance().build(RouteConsts.provider.packageInstaller).navigation(); if (DOWNLOAD_HIJACK.equals(showDialog.getType())) { DialogUtils.showQqSessionDialog(this);// 建议用户联系客服 diff --git a/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java b/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java index 411a11033c..3f361443a4 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java @@ -5,6 +5,8 @@ public class EBShowDialog { private String type; private String path; + private boolean isUsed; + public EBShowDialog(String type) { this.type = type; } @@ -30,4 +32,11 @@ public class EBShowDialog { this.path = path; } + public boolean isUsed() { + return isUsed; + } + + public void setUsed(boolean used) { + isUsed = used; + } } diff --git a/module_core/src/main/java/com/gh/gamecenter/core/utils/RunningUtils.java b/module_core/src/main/java/com/gh/gamecenter/core/utils/RunningUtils.java deleted file mode 100644 index ee66bc9cf9..0000000000 --- a/module_core/src/main/java/com/gh/gamecenter/core/utils/RunningUtils.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gh.gamecenter.core.utils; - -import android.Manifest; -import android.app.ActivityManager; -import android.app.ActivityManager.RunningAppProcessInfo; -import android.app.ActivityManager.RunningTaskInfo; -import android.content.ComponentName; -import android.content.Context; -import androidx.annotation.RequiresPermission; - -import java.util.List; - -public class RunningUtils { - - /** - * 判断当前应用程序处于前台还是后台 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isApplicationBroughtToBackground(Context context) { - ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List tasks = am.getRunningTasks(1); - if (!tasks.isEmpty()) { - ComponentName topActivity = tasks.get(0).topActivity; - if (!topActivity.getPackageName().equals(context.getPackageName())) { - return true; - } - } - return false; - - } - - /** - * 判断当前应用程序处于前台还是后台 - */ - public static boolean isBackground(Context context) { - ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List appProcesses = activityManager.getRunningAppProcesses(); - for (RunningAppProcessInfo appProcess : appProcesses) { - if (appProcess.processName.equals(context.getPackageName())) { - if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) { - return true; - } else { - return false; - } - } - } - return false; - } - - /** - * 判断当前topactivity是否与传入的相同 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isEqualsTop(Context context, String activityName) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.topActivity.getClassName().equals(activityName)) { - return true; - } - } - return false; - } - - /** - * 判断当前baseActivity是否与传入的相同 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isEqualsBase(Context context, String activityName) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.baseActivity.getClassName().equals(activityName)) { - return true; - } - } - return false; - } - - /** - * 判断应用是否正在运行 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isRunning(Context context) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.topActivity.getPackageName().equals(context.getPackageName()) - && info.baseActivity.getPackageName().equals(context.getPackageName())) { - return true; - } - } - return false; - } - - /** - * 获取当前baseActivity - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static String getBaseActivity(Context context) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.baseActivity.getPackageName().equals(context.getPackageName())) { - return info.baseActivity.getClassName(); - } - } - return null; - } - - /** - * 获取当前topActivity - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static String getTopActivity(Context context) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.topActivity.getPackageName().equals( - context.getPackageName())) { - return info.topActivity.getClassName(); - } - } - return null; - } - -} From 8f72f8078802fa2584c74b6775436a51657c7a96 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Thu, 29 Sep 2022 14:54:40 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E9=81=BF=E5=85=8D=E9=9A=90=E7=A7=81?= =?UTF-8?q?=E6=94=BF=E7=AD=96=E9=80=9A=E8=BF=87=E5=89=8D=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=20rom=20=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/DownloadNotificationHelper.kt | 4 +--- .../com/gh/gamecenter/common/exposure/meta/MetaUtil.kt | 9 ++++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt index 1dc3edfc91..eb5b9833bc 100644 --- a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt @@ -19,7 +19,6 @@ import com.gh.gamecenter.core.utils.SpeedUtils import com.halo.assistant.HaloApp import com.lightgame.download.DownloadEntity import com.lightgame.download.DownloadStatus -import com.walkud.rom.checker.RomIdentifier object DownloadNotificationHelper { @@ -34,7 +33,6 @@ object DownloadNotificationHelper { const val ACTION_VDOWNLOAD = "com.gh.gamecenter.VDOWNLOAD" private val mNotifyMap: MutableMap = mutableMapOf() - private val mShouldUseAlternativeNotificationIcon by lazy { RomIdentifier.getRom().versionName == null } private fun getNotificationManager(): NotificationManager { return HaloApp.getInstance().application.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager @@ -194,6 +192,6 @@ object DownloadNotificationHelper { } private fun getNotificationIcon(): Int { - return if (mShouldUseAlternativeNotificationIcon) R.drawable.ic_download_notification else R.mipmap.logo + return R.mipmap.logo } } \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt index ea0f08a724..bd42349d5a 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt @@ -37,9 +37,12 @@ object MetaUtil { fun refreshMeta() { if (romName == null) { - tryWithDefaultCatch { - romName = RomIdentifier.getRom().name - romVersion = RomIdentifier.getRom().versionName + val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == true) { + tryWithDefaultCatch { + romName = RomIdentifier.getRom().name + romVersion = RomIdentifier.getRom().versionName + } } } val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider From 48459c84e1166b6b7f6c87c3637823f845ae1e78 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Thu, 29 Sep 2022 15:17:39 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=E9=9A=90=E7=A7=81=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E8=B7=B3=E8=BD=AC=E8=87=B3=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E6=89=93=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt index 2445efff92..c655878b83 100644 --- a/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt @@ -11,6 +11,7 @@ import android.view.* import androidx.core.content.ContextCompat import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentTransaction +import com.gh.common.util.DirectUtils import com.gh.gamecenter.R import com.gh.gamecenter.WebActivity import com.gh.gamecenter.common.base.fragment.BaseDialogFragment @@ -93,8 +94,7 @@ class NewPrivacyPolicyDialogFragment: BaseDialogFragment() { else -> "" } - val intent = WebActivity.getIntent(requireContext(), selectedUrl, true) - requireContext().startActivity(intent) + DirectUtils.directToExternalBrowser(requireContext(), selectedUrl) } }, hypertextPositionPair.first, hypertextPositionPair.second, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) }