package kz.virtex.htc.tweaker.mods; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; import java.lang.reflect.Constructor; import kz.virtex.htc.tweaker.Misc; import android.content.Context; import android.os.Bundle; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodReplacement; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class Settings { public static void hookSystemLocales() { try { final Class<?> HtcCustomizedStorage = XposedHelpers.findClass("com.htc.customize.storage.HtcCustomizedStorage", null); findAndHookMethod(HtcCustomizedStorage, "get", Context.class, String.class, String.class, new XC_MethodHook() { protected void beforeHookedMethod(MethodHookParam param) throws Throwable { String str1 = (String) param.args[1]; String str2 = (String) param.args[2]; Misc.x("HtcCustomizedStorage invoke: " + str1 + "_" + str2); if (str1.equals("system") && str2.equals("locale")) { Misc.x("HtcCustomizedStorage invoke: hooking system_language"); Class<?> HtcCustomData = XposedHelpers.findClass("com.htc.customize.storage.customize.HtcCustomizedData", null); Constructor<?> ctor = HtcCustomData.getConstructor(Bundle.class); Object object = ctor.newInstance(new Object[] { null }); param.setResult(object); } } }); } catch (Throwable t) { XposedBridge.log(t); } } public static void hookUSBNotification(final LoadPackageParam paramLoadPackageParam) { findAndHookMethod("com.android.settings.PSService", paramLoadPackageParam.classLoader, "SetUSBNotification", "android.content.Context", boolean.class, new XC_MethodReplacement() { protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { return null; } }); } public static void hookGoogleSupport(final LoadPackageParam paramLoadPackageParam) { findAndHookMethod("com.htc.launcher.util.SettingUtil", paramLoadPackageParam.classLoader, "isGoogleApplicationsSupport", "android.content.Context", new XC_MethodReplacement() { protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { Boolean ret = true; return ret; } }); } }