展锐Android13禁止用户使用超级省电
1、打开/packages/apps/Settings/res/xml/power_usage_summary.xml,找到
...........................................
<SwitchPreferenceandroid:key="super_power_saving_mode"android:title="@string/super_power_saving_mode"settings:controller="com.android.settings.fuelgauge.SuperPowerSavingPreferenceController" />
........................................
2、根据com.android.settings.fuelgauge.SuperPowerSavingPreferenceController,查找到代码文件/packages/apps/Settings/src_unisoc/com/android/settings/fuelgauge/SuperPowerSavingPreferenceController.java。并修改changeEnabled方法的代码,根据设定系统属性,判断是否置灰设置里面的超级省电开关。
private void changeEnabled(Preference preference){//add code...........String custom=SystemProperties.get("persist.sys.custom","").trim(); if (custom.length()!=0){switch (custom){case "XXX1": case "XXX2":if(preference != null ){preference.setEnabled(false);}return;default:break;}}//add endboolean isEnabled = false ;if (mPluggedIn || mInUltraPowerSaveMode || isLockTaskModePinned()) {isEnabled = false ;} else {isEnabled = true ;}if(preference != null ){preference.setEnabled(isEnabled);}}
2、打开/vendor/sprd/platform/frameworks/base/packages/SystemUI/src-unisoc/com/unisoc/systemui/qs/tiles/SuperBatteryTile.java,禁止从下拉状态栏修改
(1)修改handleClick方法,防止点击
@Overrideprotected void handleClick(@Nullable View view) {//add code.........String custom= SystemProperties.get("persist.sys.custom","").trim(); if (custom.length()!=0) {switch (custom) {case "XXX1":case "XXX2": return;default:break;}}//add end............if (getState().state == Tile.STATE_UNAVAILABLE) {return;} setBatterySaveMode();}
(2)修改handleLongClick方法,防止长按
@Overrideprotected void handleLongClick(@Nullable View view) {//add code.........String custom= SystemProperties.get("persist.sys.custom","").trim(); if (custom.length()!=0) {switch (custom) {case "XXX1":case "XXX2": return;default:break;}}//add end............if (UnisocPowerManagerUtil.isSuperPower()) {return;}super.handleLongClick(view);}
(3)修改handleUpdateState,更改按钮状态
@Overrideprotected void handleUpdateState(BooleanState state, Object arg) {state.icon = ResourceIcon.get(R.drawable.ic_qs_battery_super_save);state.label = mContext.getString(R.string.super_battery_detail_switch_title);state.contentDescription = state.label; state.state = isCharging() ? Tile.STATE_UNAVAILABLE : Tile.STATE_INACTIVE;//add code........String custom= SystemProperties.get("persist.sys.custom","").trim(); if (custom.length()!=0) {switch (custom) {case "XXX1":case "XXX2": state.state = Tile.STATE_UNAVAILABLE;break;default:break;}}//add end..........}