From ba499034a2ff60dc06865aeddca15cd2aa40c49b Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Sun, 20 Mar 2022 00:45:47 +0800 Subject: [PATCH] Fix a bug --- .../yukihookapi/hook/core/YukiHookCreater.kt | 6 +++--- .../hook/core/finder/FieldFinder.kt | 4 ++-- .../yukihookapi/hook/param/HookParam.kt | 10 +++++----- .../hook/param/wrapper/HookParamWrapper.kt | 2 +- .../hook/param/wrapper/PackageParamWrapper.kt | 2 +- .../hook/type/android/ComponentTypeFactory.kt | 18 ++++++++--------- .../hook/type/android/GraphicsTypeFactory.kt | 2 +- .../hook/type/java/VariableTypeFactory.kt | 2 +- .../hook/xposed/prefs/YukiHookModulePrefs.kt | 20 ++++++++++++++----- 9 files changed, 38 insertions(+), 28 deletions(-) diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt index 041a2602..f0565dbe 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiHookCreater.kt @@ -311,7 +311,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl /** * 拦截并替换方法返回值为 true * - * ❗确保替换方法的返回对象为 [Boolean] + * - ❗确保替换方法的返回对象为 [Boolean] * * 不可与 [beforeHook]、[afterHook] 同时使用 */ @@ -323,7 +323,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl /** * 拦截并替换方法返回值为 false * - * ❗确保替换方法的返回对象为 [Boolean] + * - ❗确保替换方法的返回对象为 [Boolean] * * 不可与 [beforeHook]、[afterHook] 同时使用 */ @@ -335,7 +335,7 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl /** * 拦截此方法 * - * ❗这将会禁止此方法执行并返回 null + * - ❗这将会禁止此方法执行并返回 null * * 不可与 [beforeHook]、[afterHook] 同时使用 */ diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt index 3543b66f..dc8c0f63 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/finder/FieldFinder.kt @@ -179,14 +179,14 @@ class FieldFinder( /** * 设置变量实例为 true * - * ❗请确保示例对象类型为 [Boolean] + * - ❗请确保示例对象类型为 [Boolean] */ fun setTrue() = set(true) /** * 设置变量实例为 true * - * ❗请确保示例对象类型为 [Boolean] + * - ❗请确保示例对象类型为 [Boolean] */ fun setFalse() = set(false) diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt index 5f0e03ec..ab26887d 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt @@ -123,7 +123,7 @@ class HookParam(private val wrapper: HookParamWrapper) { /** * 设置当前 Hook 对象方法的 [result] 返回值为 true * - * ❗请确保 [result] 类型为 [Boolean] + * - ❗请确保 [result] 类型为 [Boolean] */ fun resultTrue() { result = true @@ -132,7 +132,7 @@ class HookParam(private val wrapper: HookParamWrapper) { /** * 设置当前 Hook 对象方法的 [result] 返回值为 false * - * ❗请确保 [result] 类型为 [Boolean] + * - ❗请确保 [result] 类型为 [Boolean] */ fun resultFalse() { result = false @@ -141,7 +141,7 @@ class HookParam(private val wrapper: HookParamWrapper) { /** * 设置当前 Hook 对象方法的 [result] 为 null * - * ❗此方法将强制设置方法体的 [result] 为 null + * - ❗此方法将强制设置方法体的 [result] 为 null */ fun resultNull() { result = null @@ -174,14 +174,14 @@ class HookParam(private val wrapper: HookParamWrapper) { /** * 设置方法参数的实例对象为 true * - * ❗请确保目标对象的类型是 [Boolean] 不然会发生意想不到的问题 + * - ❗请确保目标对象的类型是 [Boolean] 不然会发生意想不到的问题 */ fun setTrue() = set(true) /** * 设置方法参数的实例对象为 false * - * ❗请确保目标对象的类型是 [Boolean] 不然会发生意想不到的问题 + * - ❗请确保目标对象的类型是 [Boolean] 不然会发生意想不到的问题 */ fun setFalse() = set(false) diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt index 9e35eb56..09161857 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt @@ -36,7 +36,7 @@ import java.lang.reflect.Member /** * 用于包装 [HookParam] * - * ❗这是一个私有 API - 请不要在外部使用 + * - ❗这是一个私有 API - 请不要在外部使用 * @param baseParam 对接 [XC_MethodHook.MethodHookParam] */ @DoNotUseClass diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt index 90a50420..82ef9edb 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt @@ -36,7 +36,7 @@ import com.highcapable.yukihookapi.hook.param.PackageParam /** * 用于包装 [PackageParam] * - * ❗这是一个私有 API - 请不要在外部使用 + * - ❗这是一个私有 API - 请不要在外部使用 * @param packageName 包名 * @param processName 当前进程名 * @param appClassLoader APP [ClassLoader] diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt index 9eb0a63e..46398eeb 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt @@ -293,7 +293,7 @@ val ArrayMapClass get() = ArrayMap::class.java * 获得 [ArraySet] 类型 * @return [Class] * - * ❗在 Android M (23) 及以上系统加入 + * - ❗在 Android M (23) 及以上系统加入 */ val ArraySetClass get() = ArraySet::class.java @@ -336,7 +336,7 @@ val AsyncTaskClass get() = AsyncTask::class.java /** * 获得 [SimpleDateFormat] 类型 * - * ❗在 Android N (24) 及以上系统加入 + * - ❗在 Android N (24) 及以上系统加入 * @return [Class] */ val SimpleDateFormatClass_Android get() = SimpleDateFormat::class.java @@ -362,7 +362,7 @@ val WindowClass get() = Window::class.java /** * 获得 [WindowMetrics] 类型 * - * ❗在 Android R (30) 及以上系统加入 + * - ❗在 Android R (30) 及以上系统加入 * @return [Class] */ val WindowMetricsClass get() = WindowMetrics::class.java @@ -376,7 +376,7 @@ val WindowInsetsClass get() = WindowInsets::class.java /** * 获得 [WindowInsets.Type] 类型 * - * ❗在 Android R (30) 及以上系统加入 + * - ❗在 Android R (30) 及以上系统加入 * @return [Class] */ val WindowInsets_TypeClass get() = WindowInsets.Type::class.java @@ -594,7 +594,7 @@ val VibratorClass get() = Vibrator::class.java /** * 获得 [VibrationEffect] 类型 * - * ❗在 Android O (26) 及以上系统加入 + * - ❗在 Android O (26) 及以上系统加入 * @return [Class] */ val VibrationEffectClass get() = VibrationEffect::class.java @@ -602,7 +602,7 @@ val VibrationEffectClass get() = VibrationEffect::class.java /** * 获得 [VibrationAttributes] 类型 * - * ❗在 Android R (30) 及以上系统加入 + * - ❗在 Android R (30) 及以上系统加入 * @return [Class] */ val VibrationAttributesClass get() = VibrationAttributes::class.java @@ -640,7 +640,7 @@ val UserDataHandlerClass get() = UserDataHandler::class.java /** * 获得 [ShortcutInfo] 类型 * - * ❗在 Android N_MR1 (25) 及以上系统加入 + * - ❗在 Android N_MR1 (25) 及以上系统加入 * @return [Class] */ val ShortcutInfoClass get() = ShortcutInfo::class.java @@ -648,7 +648,7 @@ val ShortcutInfoClass get() = ShortcutInfo::class.java /** * 获得 [ShortcutManager] 类型 * - * ❗在 Android R (30) 及以上系统加入 + * - ❗在 Android R (30) 及以上系统加入 * @return [Class] */ val ShortcutManagerClass get() = ShortcutManager::class.java @@ -656,7 +656,7 @@ val ShortcutManagerClass get() = ShortcutManager::class.java /** * 获得 [ShortcutQuery] 类型 * - * ❗在 Android N_MR1 (25) 及以上系统加入 + * - ❗在 Android N_MR1 (25) 及以上系统加入 * @return [Class] */ val ShortcutQueryClass get() = ShortcutQuery::class.java diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt index 6bf42ae8..a7f06a07 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt @@ -50,7 +50,7 @@ val BitmapClass get() = Bitmap::class.java /** * 获得 [Icon] 类型 * - * ❗在 Android M (23) 及以上系统加入 + * - ❗在 Android M (23) 及以上系统加入 * @return [Class] */ val IconClass get() = Icon::class.java diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt index e4f57ee6..b96482fd 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt @@ -336,7 +336,7 @@ val ThreadClass get() = Thread::class.java /** * 获得 [Base64] 类型 * - * ❗在 Android O (26) 及以上系统加入 + * - ❗在 Android O (26) 及以上系统加入 * @return [Class] */ val Base64Class_Java get() = Base64::class.java diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt index f608a44f..4a38fd7e 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt @@ -162,7 +162,7 @@ class YukiHookModulePrefs(private val context: Context? = null) { value } } - else xPref.getString(key, default) ?: default + else resetCacheSet { xPref.getString(key, default) ?: default } else sPref.getString(key, default) ?: default).let { makeWorldReadable() it @@ -185,7 +185,7 @@ class YukiHookModulePrefs(private val context: Context? = null) { value } } - else xPref.getBoolean(key, default) + else resetCacheSet { xPref.getBoolean(key, default) } else sPref.getBoolean(key, default)).let { makeWorldReadable() it @@ -208,7 +208,7 @@ class YukiHookModulePrefs(private val context: Context? = null) { value } } - else xPref.getInt(key, default) + else resetCacheSet { xPref.getInt(key, default) } else sPref.getInt(key, default)).let { makeWorldReadable() it @@ -231,7 +231,7 @@ class YukiHookModulePrefs(private val context: Context? = null) { value } } - else xPref.getFloat(key, default) + else resetCacheSet { xPref.getFloat(key, default) } else sPref.getFloat(key, default)).let { makeWorldReadable() it @@ -254,7 +254,7 @@ class YukiHookModulePrefs(private val context: Context? = null) { value } } - else xPref.getLong(key, default) + else resetCacheSet { xPref.getLong(key, default) } else sPref.getLong(key, default)).let { makeWorldReadable() it @@ -363,4 +363,14 @@ class YukiHookModulePrefs(private val context: Context? = null) { xPrefCacheKeyValueLongs.clear() xPrefCacheKeyValueFloats.clear() } + + /** + * 恢复 [isUsingKeyValueCache] 为默认状态 + * @param result 回调方法体的结果 + * @return [T] + */ + private fun resetCacheSet(result: () -> T): T { + isUsingKeyValueCache = YukiHookAPI.Configs.isEnableModulePrefsCache + return result() + } } \ No newline at end of file