Compare commits

...

6 Commits

Author SHA1 Message Date
3ae27ebdb6 chore: 版本更新至 5.14.2 2022-11-01 17:20:30 +08:00
aab422662a Merge branch 'hotfix-v5.14.1-631-onConfigurationChanged' into 'release'
fix: 添加 onConfigurationChanged 日志辅助闪退确定问题

See merge request halo/android/assistant-android!407
2022-11-01 17:19:23 +08:00
8193b9ec9f fix: 添加 onConfigurationChanged 日志辅助闪退确定问题 2022-11-01 16:23:54 +08:00
13929f4dc5 Merge branch 'hotfix-v5.14.1-631-webview_dark_error' into 'release'
fix: 修复web页面开启夜间模式闪退问题

See merge request halo/android/assistant-android!404
2022-11-01 16:18:12 +08:00
0ea0834140 fix: 修复web页面开启夜间模式闪退问题 2022-11-01 16:09:05 +08:00
7efdb5e432 Merge branch 'hotfix-v5.14.1-631-simulator_sync_error' into 'release'
fix: 修复模拟器游戏列表可能出现的服务端为空,本地不为空的问题

See merge request halo/android/assistant-android!393
2022-10-31 18:51:40 +08:00
3 changed files with 47 additions and 15 deletions

View File

@ -7,8 +7,8 @@ ext {
targetSdkVersion = 28
// application info (每个大版本之间的 versionCode 增加 20)
versionCode = 631
versionName = "5.14.1"
versionCode = 632
versionName = "5.14.2"
applicationId = "com.gh.gamecenter"
// AndroidX

View File

@ -80,6 +80,9 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import io.sentry.Breadcrumb;
import io.sentry.Sentry;
import io.sentry.SentryLevel;
import kotlin.Pair;
import pub.devrel.easypermissions.EasyPermissions;
@ -570,6 +573,13 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy
}
}
Breadcrumb breadcrumb = new Breadcrumb();
breadcrumb.setCategory("onConfigurationChanged");
breadcrumb.setMessage("IsCalledBySystem " + isCalledBySystem + ","
+ this.getClass().getSimpleName() + " lifecycle is " + getLifecycle().getCurrentState());
breadcrumb.setLevel(SentryLevel.INFO);
Sentry.addBreadcrumb(breadcrumb);
if (BuildConfig.IS_DARK_MODE_ON && mIsDarkModeOn != DarkModeUtils.INSTANCE.isDarkModeOn(this)) {
// 当且仅当页面处于可见状态时响应新的 UiMode并将它传递下去
// (在不可见的 activity 调用 onConfigurationChanged 方法有一定概率触发 ANR

View File

@ -1,6 +1,7 @@
package com.gh.gamecenter.common.utils
import android.animation.Animator
import android.annotation.SuppressLint
import android.app.Activity
import android.content.ClipData
import android.content.ClipboardManager
@ -331,7 +332,8 @@ fun Fragment.ifLogin(entrance: String, action: (() -> Unit)? = null) {
}
fun Context.ifLogin(entrance: String, action: (() -> Unit)? = null) {
val checkLoginConfig = ARouter.getInstance().build(RouteConsts.provider.checkLogin).navigation() as? ICheckLoginProvider
val checkLoginConfig =
ARouter.getInstance().build(RouteConsts.provider.checkLogin).navigation() as? ICheckLoginProvider
checkLoginConfig?.checkLogin(this, entrance, action)
}
@ -379,8 +381,10 @@ fun String.containHtmlTag(): Boolean {
*/
fun Fragment.showRegulationTestDialogIfNeeded(action: (() -> Unit)) {
val provider = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
val userManagerProvider = ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
val userManagerProvider =
ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val dialogUtils =
ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
if (userManagerProvider?.userShouldTakeRegulationBaseOnLastRemind() == true) {
dialogUtils?.showRegulationTestDialog(requireContext(),
{ provider?.directToRegulationTestPage(requireContext()) },
@ -392,8 +396,10 @@ fun Fragment.showRegulationTestDialogIfNeeded(action: (() -> Unit)) {
fun Context.showRegulationTestDialogIfNeeded(action: (() -> Unit)) {
val provider = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
val userManagerProvider = ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
val userManagerProvider =
ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val dialogUtils =
ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
if (userManagerProvider?.userShouldTakeRegulationBaseOnLastRemind() == true) {
dialogUtils?.showRegulationTestDialog(this,
{ provider?.directToRegulationTestPage(this) },
@ -864,8 +870,10 @@ fun CharSequence.interceptUrlSpanAndRoundImageSpan(clickedCallback: ((url: Strin
override fun onClick(widget: View) {
clickedCallback?.invoke(it.url)
val webActivityProvider = ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider
val provider = ARouter.getInstance().build(RouteConsts.provider.defaultUrlHandler).navigation() as IDefaultUrlHandlerProvider
val webActivityProvider =
ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider
val provider = ARouter.getInstance().build(RouteConsts.provider.defaultUrlHandler)
.navigation() as IDefaultUrlHandlerProvider
if (!provider.interceptUrl(widget.context, it.url, "")) {
webActivityProvider?.getIntent(widget.context, it.url, true)?.run {
widget.context.startActivity(this)
@ -992,8 +1000,10 @@ fun Context.doOnMainProcessOnly(callback: EmptyCallback) {
* 虽然现在我们没有了友盟以后只是单进程APP但在 debug 模式下还有 whatTheStack 这个进程如果不限定主进程会出现奇奇怪怪的问题 (BroadcastReceiver相关)
*/
inline fun Context.doOnMainProcessOnly(f: () -> Unit) {
val buildConfig = ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val packageUtilsConfig = ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val packageUtilsConfig =
ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
val processName = packageUtilsConfig?.obtainProcessName(this)
if (processName == null || buildConfig?.getApplicationId() == processName) {
f.invoke()
@ -1005,8 +1015,10 @@ inline fun Context.doOnMainProcessOnly(f: () -> Unit) {
}
inline fun doOnMainProcessOnly(f: () -> Unit) {
val buildConfig = ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val packageUtilsConfig = ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val packageUtilsConfig =
ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
val processName = packageUtilsConfig?.obtainProcessName(HaloApp.getInstance())
if (processName == null || buildConfig?.getApplicationId() == processName) {
f.invoke()
@ -1251,9 +1263,19 @@ fun String.emojiCount(): Int {
/**
* WebView启用强制深色模式
*/
@SuppressLint("RequiresFeature")
fun WebView.enableForceDark(isDarkModeOn: Boolean) {
if (BuildConfig.IS_DARK_MODE_ON && WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
WebSettingsCompat.setForceDark(settings, if (isDarkModeOn) WebSettingsCompat.FORCE_DARK_ON else WebSettingsCompat.FORCE_DARK_OFF)
val isFeatureSupported = try {
WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)
} catch (throwable: Throwable) {
throwable.printStackTrace()
false
}
if (BuildConfig.IS_DARK_MODE_ON && isFeatureSupported) {
WebSettingsCompat.setForceDark(
settings,
if (isDarkModeOn) WebSettingsCompat.FORCE_DARK_ON else WebSettingsCompat.FORCE_DARK_OFF
)
}
}