1、打开/packages/apps/Settings/res/xml/power_usage_summary.xml,找到
...........................................
<SwitchPreference
android: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 end
boolean 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方法,防止点击
@Override
protected 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方法,防止长按
@Override
protected 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,更改按钮状态
@Override
protected 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..........
}