diff --git a/app/src/main/java/com/gh/ad/AdDelegateHelper.kt b/app/src/main/java/com/gh/ad/AdDelegateHelper.kt index 129b33868c..df71abb4e3 100644 --- a/app/src/main/java/com/gh/ad/AdDelegateHelper.kt +++ b/app/src/main/java/com/gh/ad/AdDelegateHelper.kt @@ -5,6 +5,7 @@ import android.app.Activity import android.content.Context import android.content.SharedPreferences import android.graphics.drawable.Animatable +import android.os.Build import android.os.Message import android.text.TextUtils import android.view.View @@ -43,6 +44,7 @@ import com.gh.gamecenter.feature.exposure.ExposureType import com.gh.gamecenter.retrofit.RetrofitManager import com.halo.assistant.HaloApp import io.reactivex.schedulers.Schedulers +import java.util.Locale /** * 广告实现代理类 @@ -120,7 +122,12 @@ object AdDelegateHelper { if (isFromRetry && mAdConfigList.isNotEmpty()) { return } - val paramsMap = if (keyword.isNotEmpty()) mapOf("keyword" to keyword) else mapOf() + + val paramsMap = if (keyword.isNotEmpty()) { + mapOf("keyword" to keyword, "android_sdk_version" to Build.VERSION.SDK_INT) + } else { + mapOf("android_sdk_version" to Build.VERSION.SDK_INT) + } RetrofitManager.getInstance() .newApi .getAdConfig(paramsMap) @@ -182,11 +189,16 @@ object AdDelegateHelper { // HarmonyOS 2.2.0 版本不展示第三方开屏广告 (因为会引起奇怪的闪退) if (MetaUtil.getRom().name == "HarmonyOS" && MetaUtil.getRom().versionName == "2.2.0" - && config.displayRule.adSource == "third_party_ads") { + && config.displayRule.adSource == AD_TYPE_SDK) { return } + // 华为系 Android 10 不展示第三方开屏广告 (因为会引起奇怪的闪退) + if (isBuggyHuaweiDevice() && config.displayRule.adSource == AD_TYPE_SDK) { + return + } + mSplashAd = config } @@ -215,6 +227,7 @@ object AdDelegateHelper { private fun shouldShowStartUpAdWhenHotLaunch() = (mCsjAdImpl != null) && mSplashAd?.displayRule?.hotStartSplashAd?.type == AD_TYPE_SDK && mSplashAd?.hotStartThirdPartyAd != null + && !isBuggyHuaweiDevice() /** * 是否需要显示下载管理广告 @@ -783,4 +796,16 @@ object AdDelegateHelper { mCsjAdImpl?.cancelSplashAd(context) } + /** + * 是否为有问题的华为系 Android 10 设备 + */ + private fun isBuggyHuaweiDevice(): Boolean { + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) { + val manufacturer = Build.MANUFACTURER.lowercase(Locale.CHINA) ?: "" + return manufacturer == "huawei" || manufacturer == "honor" + } else { + return false + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.kt b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.kt index 8a449e56e5..b95c2b6833 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.kt @@ -135,7 +135,7 @@ class DetailViewHolder( vUpdate = view.findViewById(R.id.v_update) tvUpdate = view.findViewById(R.id.tv_update) - context = view.context + context = view.context.getActivity() ?: view.context com.gh.gamecenter.common.R.color.text_aw_primary.toColor() var gameDownloadMode = gameEntity.getGameDownloadButtonMode() diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/detail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/detail/GameDetailFragment.kt index 75d28c8cf5..4d107dea9c 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/detail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/detail/GameDetailFragment.kt @@ -922,8 +922,10 @@ class GameDetailFragment : LazyFragment(), IScrollable { } override fun scrollToTop() { - binding.gamedetailAppbar.setExpanded(true) - binding.detailRv.scrollToPosition(0) + if (::binding.isInitialized) { + binding.gamedetailAppbar.setExpanded(true) + binding.detailRv.scrollToPosition(0) + } } // 登录事件/礼包状态变更事件