diff --git a/app/src/main/java/com/fankes/tsbattery/hook/entity/QQTIMHooker.kt b/app/src/main/java/com/fankes/tsbattery/hook/entity/QQTIMHooker.kt index 14871d7..74cdfd3 100644 --- a/app/src/main/java/com/fankes/tsbattery/hook/entity/QQTIMHooker.kt +++ b/app/src/main/java/com/fankes/tsbattery/hook/entity/QQTIMHooker.kt @@ -23,6 +23,7 @@ package com.fankes.tsbattery.hook.entity import android.app.Activity import android.app.Service +import android.content.res.Configuration import android.os.Build import android.view.View import android.view.ViewGroup @@ -75,6 +76,9 @@ object QQTIMHooker : YukiBaseHooker() { private val BaseChatPieClass = VariousClass("${PackageName.QQ}.activity.aio.core.BaseChatPie", "${PackageName.QQ}.activity.BaseChatPie") + /** 默认的 [Configuration] */ + var baseConfiguration: Configuration? = null + /** * 当前是否为 QQ * @return [Boolean] @@ -504,6 +508,9 @@ object QQTIMHooker : YukiBaseHooker() { override fun onHook() { onAppLifecycle { + attachBaseContext { baseContext, hasCalledSuper -> + if (hasCalledSuper.not()) baseConfiguration = baseContext.resources.configuration + } onCreate { appVersionName = versionName ConfigData.init(context = this) diff --git a/app/src/main/java/com/fankes/tsbattery/ui/activity/parasitic/ConfigActivity.kt b/app/src/main/java/com/fankes/tsbattery/ui/activity/parasitic/ConfigActivity.kt index 3f2e00e..8d52d9d 100644 --- a/app/src/main/java/com/fankes/tsbattery/ui/activity/parasitic/ConfigActivity.kt +++ b/app/src/main/java/com/fankes/tsbattery/ui/activity/parasitic/ConfigActivity.kt @@ -19,12 +19,13 @@ * * This file is Created by fankes on 2022/9/28. */ -@file:Suppress("SetTextI18n") +@file:Suppress("SetTextI18n", "DEPRECATION") package com.fankes.tsbattery.ui.activity.parasitic import android.content.ComponentName import android.content.Intent +import android.content.res.Resources import android.widget.TextView import androidx.core.view.isGone import androidx.core.view.isVisible @@ -34,6 +35,7 @@ import com.fankes.tsbattery.data.ConfigData import com.fankes.tsbattery.data.ConfigData.bind import com.fankes.tsbattery.databinding.ActivityConfigBinding import com.fankes.tsbattery.hook.HookEntry +import com.fankes.tsbattery.hook.entity.QQTIMHooker import com.fankes.tsbattery.ui.activity.MainActivity import com.fankes.tsbattery.ui.activity.base.BaseActivity import com.fankes.tsbattery.utils.factory.* @@ -117,6 +119,17 @@ class ConfigActivity : BaseActivity() { text = text.toString().replace(oldValue = "{APP_NAME}", appName) } + /** 重新设置 DPI 防止 QQ、TIM 修改它 */ + override fun getResources(): Resources? = super.getResources().apply { + if (packageName == PackageName.QQ || packageName == PackageName.TIM) + QQTIMHooker.baseConfiguration?.also { + updateConfiguration(configuration.apply { + fontScale = it.fontScale + densityDpi = it.densityDpi + }, displayMetrics) + } + } + /** * 获取当前 APP 名称 * @return [String]