public static void initResources(XSharedPreferences prefs, InitPackageResourcesParam resparam) { XModuleResources modRes = XModuleResources.createInstance(GravityBox.MODULE_PATH, resparam.res); if (prefs.getBoolean(GravityBoxSettings.PREF_KEY_SIGNAL_CLUSTER_HPLUS, false) && !Utils.isMtkDevice() && !Utils.isOxygenOs35Rom()) { sQsHpResId = XResources.getFakeResId(modRes, R.drawable.ic_qs_signal_hp); sSbHpResId = XResources.getFakeResId(modRes, R.drawable.stat_sys_data_fully_connected_hp); resparam.res.setReplacement(sQsHpResId, modRes.fwd(R.drawable.ic_qs_signal_hp)); resparam.res.setReplacement(sSbHpResId, modRes.fwd(R.drawable.stat_sys_data_fully_connected_hp)); DATA_HP = new int[][]{ {sSbHpResId, sSbHpResId, sSbHpResId, sSbHpResId}, {sSbHpResId, sSbHpResId, sSbHpResId, sSbHpResId} }; QS_DATA_HP = new int[]{sQsHpResId, sQsHpResId}; if (DEBUG) log("H+ icon resources initialized"); } String lteStyle = prefs.getString(GravityBoxSettings.PREF_KEY_SIGNAL_CLUSTER_LTE_STYLE, "DEFAULT"); if (!lteStyle.equals("DEFAULT")) { resparam.res.setReplacement(ModStatusBar.PACKAGE_NAME, "bool", "config_show4GForLTE", lteStyle.equals("4G")); } }
@Override public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam initPackageResourcesParam) throws Throwable { if (!HookEntry.PKG_COOLAPK.equals(initPackageResourcesParam.packageName)) return; // 替换图标 final String PATH_CURRENT_ICON = prefs.getString(PREFS_ICON_SAVE_PATH, null); if (PATH_CURRENT_ICON == null) { XposedBridge.log(TAG + "Replace icon disabled, skipping"); return; } final File file = new File(PATH_CURRENT_ICON); if (!file.exists()) { XposedBridge.log(TAG + "Replace icon disabled, skipping"); } else { XposedBridge.log(TAG + "Replacing icon..."); initPackageResourcesParam.res.setReplacement(HookEntry.PKG_COOLAPK, "mipmap", "ic_launcher", new XResources.DrawableLoader() { @Override public Drawable newDrawable(XResources xResources, int i) throws Throwable { return BitmapDrawable.createFromPath(PATH_CURRENT_ICON); } }); } }
public static ModuleResources createInstance(String modulePath, XResources origRes) { if(modulePath == null) throw new IllegalArgumentException("modulePath must not be null"); AssetManager assets = (AssetManager)newInstance(AssetManager.class); callMethod(assets, "addAssetPath", modulePath); ModuleResources res; if(origRes != null) res = new ModuleResources(assets, origRes.getDisplayMetrics(), origRes.getConfiguration()); else res = new ModuleResources(assets, null, null); AndroidAppHelper.addActiveResource(modulePath, res.hashCode(), false, res); return res; }
@Override public void initZygote(IXposedHookZygoteInit.StartupParam startupParam) throws Throwable { XposedBridge.log("CleanLockscreen initZygote"); if(android.os.Build.VERSION.SDK_INT<=20) packageName = "com.android.keyguard"; else packageName = "com.android.systemui"; MODULE_PATH = startupParam.modulePath; if(MODULE_PATH == null){ XposedBridge.log("CleanLockscreen modulePath is null!"); } prefs = new XSharedPreferences(CleanLockscreen.class.getPackage().getName()); // Remove emergency call text if (prefs.getBoolean("remove_emergency", false)) { XResources.setSystemWideReplacement("android:string/lockscreen_emergency_call", ""); } XposedBridge.log("CleanLockscreen initZygote complete"); }
private static void themeListItemView(XResources res, String layoutName, final boolean extraLine) { res.hookLayout(HANGOUTS_RES_PKG_NAME, "layout", layoutName, new XC_LayoutInflated() { public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable { ((LinearLayout) liparam.view.findViewById(liparam.res.getIdentifier("icon", "id", HANGOUTS_RES_PKG_NAME)).getParent()).setBackgroundColor(COLOR_GROUP_5); ((ImageView) liparam.view.findViewById(liparam.res.getIdentifier("icon", "id", HANGOUTS_RES_PKG_NAME))).setColorFilter(COLOR_GROUP_1, PorterDuff.Mode.SRC_IN); ((TextView) liparam.view.findViewById(liparam.res.getIdentifier("text", "id", HANGOUTS_RES_PKG_NAME))).setTextColor(COLOR_GROUP_1); if (extraLine) { ((TextView) liparam.view.findViewById(liparam.res.getIdentifier("byline", "id", HANGOUTS_RES_PKG_NAME))).setTextColor(COLOR_GROUP_2); } } }); }
@InitZygote(summary = "自動輝度調整") public static void initZygote(StartupParam startupParam, ModBrightnessSettingsGen mBrightnessSettings) throws Throwable { // 自動輝度調整 if (StringUtils.isNotEmpty(mBrightnessSettings.configAutoBrightnessLevels) && StringUtils .isNotEmpty(mBrightnessSettings.configAutoBrightnessLcdBacklightValues)) { int[] autoBrightnessLevels = makeIntArray(mBrightnessSettings.configAutoBrightnessLevels); int[] autoBrightnessLcdBacklightValues = makeIntArray(mBrightnessSettings.configAutoBrightnessLcdBacklightValues); if ((autoBrightnessLevels.length + 1) != autoBrightnessLcdBacklightValues.length) { throw new IllegalArgumentException("パラメータ数エラー"); } XResources.setSystemWideReplacement("android", "array", "config_autoBrightnessLevels", autoBrightnessLevels); XResources.setSystemWideReplacement("android", "array", "config_autoBrightnessLcdBacklightValues", autoBrightnessLcdBacklightValues); XResources.setSystemWideReplacement("android", "bool", "config_automatic_brightness_available", true); } }
public static void initResources(XSharedPreferences prefs, InitPackageResourcesParam resparam) { XModuleResources modRes = XModuleResources.createInstance(GravityBox.MODULE_PATH, resparam.res); mIconNotifResId = XResources.getFakeResId(modRes, R.drawable.ic_audio_notification); resparam.res.setReplacement(mIconNotifResId, modRes.fwd(R.drawable.ic_audio_notification)); mIconNotifMuteResId = XResources.getFakeResId(modRes, R.drawable.ic_audio_notification_mute); resparam.res.setReplacement(mIconNotifMuteResId, modRes.fwd(R.drawable.ic_audio_notification_mute)); }
private static void replaceRecoveryMessage() { try { Resources res = XResources.getSystem(); XResources.setSystemWideReplacement( res.getIdentifier("reboot_to_reset_title", "string", "android"), mRecoveryStr); } catch (Throwable t) { /* ignore */ } }
public static boolean hasTelephonySupport() { try { Resources res = XResources.getSystem(); return res.getBoolean(res.getIdentifier("config_voice_capable", "bool", "android")); } catch (Throwable t) { log("hasTelephonySupport(): " + t.getMessage()); return false; } }
@Override public void initZygote(IXposedHookZygoteInit.StartupParam startupParam) throws Throwable { loadPrefs(); /* // Tried changing dark theme as white, didn't work XResources.setSystemWideReplacement("android", "color", "primary_text_default_material_dark", Color.parseColor("#de000000")); XResources.setSystemWideReplacement("android", "color", "secondary_text_default_material_dark", Color.parseColor("#8a000000")); */ if(DISABLE_EUI) { XResources.setSystemWideReplacement("android", "dimen", "status_bar_icon_size", new XResources.DimensionReplacement(20, TypedValue.COMPLEX_UNIT_DIP)); } }
@Override public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resParam) throws Throwable { XResources r = resParam.res; navBarString = r.getString(r.getIdentifier("nav_bar", "string", SYSUI_PKG_NAME)); colorAppearanceString = r.getString(r.getIdentifier("color_and_appearance", "string", SYSUI_PKG_NAME)); useDarkThemeString = r.getString(r.getIdentifier("use_dark_theme", "string", SYSUI_PKG_NAME)); nightModeDisclaimer = r.getString(r.getIdentifier("night_mode_disclaimer", "string", SYSUI_PKG_NAME)); }
private void replaceSystemWideThemes() { Logger.v("Replacing system-wide Theme resources."); Logger.logTheme(mSettings); XResources.setSystemWideReplacement("android", "color", "material_blue_grey_900", mSettings.getPrimaryColor()); XResources.setSystemWideReplacement("android", "color", "primary_material_dark", mSettings.getPrimaryColor()); // XResources.setSystemWideReplacement("android", "color", "primary_material_light", // Common.enlightColor(mSettings.getPrimaryColor(), 2.25f)); XResources.setSystemWideReplacement("android", "color", "material_blue_grey_950", mSettings.getPrimaryDarkColor()); XResources.setSystemWideReplacement("android", "color", "primary_dark_material_dark", mSettings.getPrimaryDarkColor()); // XResources.setSystemWideReplacement("android", "color", "primary_dark_material_light", // Common.enlightColor(mSettings.getPrimaryColor(), 1.65f)); XResources.setSystemWideReplacement("android", "color", "material_deep_teal_500", mSettings.getAccentColor()); XResources.setSystemWideReplacement("android", "color", "accent_material_dark", mSettings.getAccentColor()); XResources.setSystemWideReplacement("android", "color", "accent_material_light", mSettings.getAccentColor()); XResources.setSystemWideReplacement("android", "color", "material_deep_teal_200", Common.enlightColor(mSettings.getAccentColor(), 1.5f)); Logger.v("Theme resources replaced."); }
@Override public void initZygote(StartupParam startupParam) throws Throwable { prefs = new XSharedPreferences(LollipopPowerMenu.class.getPackage() .getName()); prefs.makeWorldReadable(); ArrayList<String> itemsList = new ArrayList<String>(); if (isEnabled(GLOBAL_ACTION_KEY_POWER, true)) { itemsList.add(GLOBAL_ACTION_KEY_POWER); } if (isEnabled(GLOBAL_ACTION_KEY_AIRPLANE, false)) { itemsList.add(GLOBAL_ACTION_KEY_AIRPLANE); } if (isEnabled(GLOBAL_ACTION_KEY_SILENT, false)) { itemsList.add(GLOBAL_ACTION_KEY_SILENT); } if (isEnabled(GLOBAL_ACTION_KEY_USERS, false)) { itemsList.add(GLOBAL_ACTION_KEY_USERS); } if (isEnabled(GLOBAL_ACTION_KEY_SETTINGS, false)) { itemsList.add(GLOBAL_ACTION_KEY_SETTINGS); } if (isEnabled(GLOBAL_ACTION_KEY_LOCKDOWN, false)) { itemsList.add(GLOBAL_ACTION_KEY_LOCKDOWN); } String[] powerMenuItems = itemsList .toArray(new String[itemsList.size()]); XResources.setSystemWideReplacement("android", "array", "config_globalActionsList", powerMenuItems); }
@Override public void initZygote(IXposedHookZygoteInit.StartupParam param) throws Throwable { SystemUIResources.initFlags(); MODULE_PATH = param.modulePath; prefs = new XSharedPreferences(XposedMain.class.getPackage().getName()); prefs.makeWorldReadable(); if(JELLYBEAN && prefs.getBoolean("key_hide_shortcuts", false)) { XResources.setSystemWideReplacement("android", "drawable", "ic_lockscreen_camera_hint", 0); XResources.setSystemWideReplacement("android", "drawable", "ic_lockscreen_other_widgets_hint", 0); } }
@Override public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resParam) throws Throwable { if(!resParam.packageName.equals("com.lge.appwidget.clock") && !resParam.packageName.equals("com.lge.clock")) return; final String moduleName = QuickcirclemodSettings.class.getPackage().getName(); final Clock c = getActiveClock(); if(c == null) return; String resourcetype; if(Build.DEVICE.equals("g2")) { resourcetype = "drawable"; } else { resourcetype = "raw"; } for(final String file : c.getFiles()) { try { resParam.res.setReplacement(resParam.packageName, resourcetype, removeExtension(file), new XResources.DrawableLoader() { @Override public Drawable newDrawable(XResources xResources, int i) throws Throwable { BitmapDrawable drawable = new BitmapDrawable("/data/data/" + moduleName + "/files/" + c.getId() + "/" + file); drawable.setTargetDensity(c.getDevice() == Clock.Device.G2 ? 480 : 640); return drawable; } }); } catch (Throwable ex) { XposedBridge.log(ex); } } }
private static void replaceAvatarColor(XResources res, String name, int customResId, int dpi, int color) { int existingResID = res.getIdentifier(name, "drawable", HANGOUTS_RES_PKG_NAME); final Bitmap customBitmap; { BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; options.inMutable = true; customBitmap = BitmapFactory.decodeResource(res, existingResID, options); Canvas canvas = new Canvas(customBitmap); canvas.setDensity(dpi); canvas.drawColor(color); // BitmapFactory.decodeResource doesn't work here // noinspection ConstantConditions Bitmap avatar = ((BitmapDrawable) res.getDrawable(customResId)).getBitmap(); canvas.drawBitmap(avatar, 0, 0, null); avatar.recycle(); } res.setReplacement(existingResID, new XResources.DrawableLoader() { @Override public Drawable newDrawable(XResources xResources, int i) throws Throwable { // If copies aren't made then Hangouts sometimes force closes return new BitmapDrawable(xResources, customBitmap.copy(Bitmap.Config.ARGB_8888, false)); } }); }
private static void replaceLayoutBackgroundColor(XResources res, String layoutName, final String ResId, final int color) { res.hookLayout(HANGOUTS_RES_PKG_NAME, "layout", layoutName, new XC_LayoutInflated() { public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable { if (ResId == null) { liparam.view.setBackgroundColor(color); } else { liparam.view.findViewById(liparam.res.getIdentifier(ResId, "id", HANGOUTS_RES_PKG_NAME)) .setBackgroundColor(color); } } }); }
private static void setTextColor(XResources res, String layoutName, final String ResId, final int color) { res.hookLayout(HANGOUTS_RES_PKG_NAME, "layout", layoutName, new XC_LayoutInflated() { public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable { ((TextView) liparam.view.findViewById(liparam.res.getIdentifier(ResId, "id", HANGOUTS_RES_PKG_NAME))).setTextColor(color); } }); }
public static void handleInitPackageResources(Config config, XResources res) { if (!config.modEnabled) { return; } XModuleResources moduleRes = XModuleResources.createInstance(XHangouts.modulePath, res); dialogTitleId = res.addResource(moduleRes, R.string.hangouts_vdialog_title); dialogMsgId = res.addResource(moduleRes, R.string.hangouts_vdialog_msg); dialogUpgradeId = res.addResource(moduleRes, R.string.hangouts_vdialog_upgrade); dialogDowngradeId = res.addResource(moduleRes, R.string.hangouts_vdialog_downgrade); dialogButtonId = res.addResource(moduleRes, R.string.hangouts_vdialog_button); }
public static void handleInitPackageResources(Config config, XResources res) { if (!config.modEnabled) { return; } // Get the resources for this module XModuleResources moduleRes = XModuleResources.createInstance(XHangouts.modulePath, res); // Add a new "fake" resource and instantly replace it with the string we actually want res.setReplacement(res.addResource(moduleRes, R.string.hangouts_menu_title), ACTUAL_TITLE); // Add the desired menu icon to the Google Hangouts resources for use like above hangoutsResMenuIcon = res.getIdentifier(HANGOUTS_UNUSED_ICON, null, null); res.setReplacement(hangoutsResMenuIcon, moduleRes.fwd(R.drawable.ic_hangouts_menu)); }
@InitZygote(summary = "最低輝度") public static void minBrightness(StartupParam startupParam, ModBrightnessSettingsGen mBrightnessSettings) throws Throwable { XResources.setSystemWideReplacement("android", "integer", "config_screenBrightnessDim", mBrightnessSettings.minBrightness); if (VersionUtil.isJBmr1OrLater()) { XResources.setSystemWideReplacement("android", "integer", "config_screenBrightnessSettingMinimum", mBrightnessSettings.minBrightness); } }
@InitZygote(summary = "ActionMenuのテキスト表示") public static void setConfigAllowActionMenuItemTextWithIcon(StartupParam startupParam, ModOtherUtilitiesSettingsGen mOtherUtilitiesSettings) throws Throwable { XResources.setSystemWideReplacement("android", "bool", "config_allowActionMenuItemTextWithIcon", mOtherUtilitiesSettings.configAllowActionMenuItemTextWithIcon); }
@InitZygote(summary = "カメラ シャッター音") @XMinSdkVersion(Build.VERSION_CODES.JELLY_BEAN_MR1) public static void setConfigCameraSoundForced(StartupParam startupParam, ModOtherUtilitiesSettingsGen mOtherUtilitiesSettings) throws Throwable { XResources.setSystemWideReplacement("android", "bool", "config_camera_sound_forced", mOtherUtilitiesSettings.configCameraSoundForced); }
public static void initResources(final XSharedPreferences prefs) { try { Resources systemRes = XResources.getSystem(); int translucentDecor = Integer.valueOf(prefs.getString(GravityBoxSettings.PREF_KEY_TRANSLUCENT_DECOR, "0")); if (translucentDecor != 0) { XResources.setSystemWideReplacement("android", "bool", "config_enableTranslucentDecor", translucentDecor == 1); } if (prefs.getBoolean(GravityBoxSettings.PREF_KEY_NAVBAR_OVERRIDE, false)) { XResources.setSystemWideReplacement("android", "bool", "config_showNavigationBar", prefs.getBoolean(GravityBoxSettings.PREF_KEY_NAVBAR_ENABLE, SystemPropertyProvider.getSystemConfigBool(systemRes, "config_showNavigationBar"))); } XResources.setSystemWideReplacement("android", "bool", "config_unplugTurnsOnScreen", prefs.getBoolean(GravityBoxSettings.PREF_KEY_UNPLUG_TURNS_ON_SCREEN, SystemPropertyProvider.getSystemConfigBool(systemRes, "config_unplugTurnsOnScreen"))); if (!Utils.isVerneeApolloDevice()) { int pulseNotificationDelay = prefs.getInt(GravityBoxSettings.PREF_KEY_PULSE_NOTIFICATION_DELAY, -1); if (pulseNotificationDelay != -1) { XResources.setSystemWideReplacement("android", "integer", "config_defaultNotificationLedOff", (pulseNotificationDelay));; } } XResources.setSystemWideReplacement("android", "bool", "config_sip_wifi_only", false); if (prefs.getBoolean(GravityBoxSettings.PREF_KEY_BRIGHTNESS_MASTER_SWITCH, false)) { int brightnessMin = prefs.getInt(GravityBoxSettings.PREF_KEY_BRIGHTNESS_MIN, 20); XResources.setSystemWideReplacement( "android", "integer", "config_screenBrightnessSettingMinimum", brightnessMin); if (DEBUG) log("Minimum brightness value set to: " + brightnessMin); int screenDim = prefs.getInt(GravityBoxSettings.PREF_KEY_SCREEN_DIM_LEVEL, 10); XResources.setSystemWideReplacement( "android", "integer", "config_screenBrightnessDim", screenDim); if (DEBUG) log("Screen dim level set to: " + screenDim); } // Safe media volume Utils.TriState triState = Utils.TriState.valueOf(prefs.getString( GravityBoxSettings.PREF_KEY_SAFE_MEDIA_VOLUME, "DEFAULT")); if (DEBUG) log(GravityBoxSettings.PREF_KEY_SAFE_MEDIA_VOLUME + ": " + triState); if (triState != Utils.TriState.DEFAULT) { XResources.setSystemWideReplacement("android", "bool", "config_safe_media_volume_enabled", triState == Utils.TriState.ENABLED); if (DEBUG) log("config_safe_media_volume_enabled: " + (triState == Utils.TriState.ENABLED)); } } catch (Throwable t) { XposedBridge.log(t); } }
public static XSafeModuleResources createInstance(String path, XResources origRes) { XModuleResources moduleRes = XModuleResources.createInstance(path, origRes); return new XSafeModuleResources(moduleRes); }
@Override public void initZygote(StartupParam startupParam) throws Throwable { loadPrefs(); try { XposedHelpers.findAndHookMethod( Resources.class, "updateConfiguration", Configuration.class, DisplayMetrics.class, "android.content.res.CompatibilityInfo", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { if (param.args[0] == null) { return; } String packageName; Resources res = ((Resources) param.thisObject); if (res instanceof XResources) { packageName = ((XResources) res).getPackageName(); } else if (res instanceof XModuleResources) { return; } else { try { packageName = XResources.getPackageNameDuringConstruction(); } catch (IllegalStateException e) { return; } } String hostPackageName = AndroidAppHelper.currentPackageName(); boolean isActiveApp = hostPackageName.equals(packageName); Configuration newConfig = null; if (packageName != null) { Locale loc = getPackageSpecificLocale(packageName); if (loc != null) { newConfig = new Configuration((Configuration) param.args[0]); setConfigurationLocale(newConfig, loc); if (isActiveApp) { Locale.setDefault(loc); } } } if (newConfig != null) { param.args[0] = newConfig; } } } ); } catch (Throwable t) { XposedBridge.log(t); } }
@Override public void initZygote(IXposedHookZygoteInit.StartupParam startupParam) throws Throwable { XResources.setSystemWideReplacement("android", "bool", "config_enableAutoPowerModes", true); }
@Override public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { // replacements only for SystemUI if (resparam.packageName.equals("com.android.systemui")) { loadPrefs(); if (DARK_MATERIAL_COLOR) { // Set dark material background for notification (color taken from ASOP) resparam.res.setReplacement("com.android.systemui", "color", "notification_material_background_color", Color.parseColor("#ff303030")); } if (DISABLE_EUI) { resparam.res.setReplacement("com.android.systemui", "dimen", "status_bar_icon_padding", new XResources.DimensionReplacement(0, TypedValue.COMPLEX_UNIT_DIP)); resparam.res.setReplacement("com.android.systemui", "dimen", "status_bar_icon_drawing_size", new XResources.DimensionReplacement(12, TypedValue.COMPLEX_UNIT_DIP)); resparam.res.setReplacement("com.android.systemui", "dimen", "status_bar_icon_width", new XResources.DimensionReplacement(0, TypedValue.COMPLEX_UNIT_DIP)); } /* // White Notification bar from ASOP (Theme should be material light to work) resparam.res.setReplacement("com.android.systemui", "color", "notification_material_background_color", Color.parseColor("#fffafafa")); resparam.res.setReplacement("com.android.systemui", "color", "notification_material_background_dimmed_color", Color.parseColor("#d4ffffff")); resparam.res.setReplacement("com.android.systemui", "color", "notification_material_background_low_priority_color", Color.parseColor("#ffdcdcdc")); resparam.res.setReplacement("com.android.systemui", "color", "notification_ripple_untinted_color", Color.parseColor("#20000000")); resparam.res.setReplacement("com.android.systemui", "color", "notification_ripple_tinted_color", Color.parseColor("#30ffffff")); */ /* // Trial and error, didn't work as expected resparam.res.setReplacement("com.android.systemui", "color", "notification_guts_bg_color", Color.parseColor("#1a000000")); resparam.res.setReplacement("com.android.systemui", "color", "notification_guts_title_color", Color.parseColor("#ff000000")); resparam.res.setReplacement("com.android.systemui", "color", "notification_guts_text_color", Color.parseColor("#b2000000")); resparam.res.setReplacement("com.android.systemui", "color", "notification_guts_btn_color", Color.parseColor("#ff000000")); */ } /* else if(resparam.packageName.equals("com.android.settings")){ XposedBridge.log("Inside settings"); // resparam.res.setReplacement("com.android.settings", "color", "leui_status_bar_background", Color.parseColor("#ff000000")); // resparam.res.setReplacement("com.android.settings", "color", "status_bar", Color.parseColor("#ffff0000")); // resparam.res.setReplacement("com.android.settings", "color", "leui_activity_background", Color.parseColor("#ff00ff00")); }*/ }
@Override public void unhook() { XResources.unhookLayout(resDir, id, XC_LayoutInflated.this); }
@Override public Drawable newDrawable(XResources res, int id) throws Throwable { return drawable; }
private static void replaceColor(XResources res, String name, int color) { res.setReplacement(HANGOUTS_RES_PKG_NAME, "color", name, color); }
@InitZygote(summary = "IME通知表示有無") public static void setShowOngoingImeSwitcher(StartupParam startupParam, ModOtherUtilitiesSettingsGen mOtherUtilitiesSettings) throws Throwable { XResources.setSystemWideReplacement("android", "bool", "show_ongoing_ime_switcher", mOtherUtilitiesSettings.showOngoingImeSwitcher); }