Support tips card directly changing settings [step-5]

Support clicking tips card directly changing settings.

Bug: 333989261
Test: manual
Change-Id: Idc485ee7430edff7f6d7265caf8d9d5cf97548b6
This commit is contained in:
Zaiyue Xue
2024-04-15 12:02:53 +08:00
parent be60d166eb
commit 1ee693f0ed
4 changed files with 146 additions and 81 deletions

View File

@@ -18,9 +18,13 @@ package com.android.settings.fuelgauge.batteryusage;
import android.content.Context;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
import androidx.annotation.Nullable;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.SubSettingLauncher;
@@ -49,8 +53,8 @@ final class AnomalyEventWrapper {
}
private <T> T getInfo(
Function<WarningBannerInfo, T> warningBannerInfoSupplier,
Function<WarningItemInfo, T> warningItemInfoSupplier) {
@Nullable Function<WarningBannerInfo, T> warningBannerInfoSupplier,
@Nullable Function<WarningItemInfo, T> warningItemInfoSupplier) {
if (warningBannerInfoSupplier != null && mPowerAnomalyEvent.hasWarningBannerInfo()) {
return warningBannerInfoSupplier.apply(mPowerAnomalyEvent.getWarningBannerInfo());
} else if (warningItemInfoSupplier != null && mPowerAnomalyEvent.hasWarningItemInfo()) {
@@ -252,4 +256,32 @@ final class AnomalyEventWrapper {
mSubSettingLauncher.launch();
return true;
}
boolean updateSystemSettingsIfAvailable() {
final String settingsName =
getInfo(WarningBannerInfo::getMainButtonConfigSettingsName, null);
final Integer settingsValue =
getInfo(WarningBannerInfo::getMainButtonConfigSettingsValue, null);
if (TextUtils.isEmpty(settingsName) || settingsValue == null) {
Log.d(TAG, "Failed to update settings due to invalid key or value");
return false;
}
try {
Settings.System.putInt(mContext.getContentResolver(), settingsName, settingsValue);
Log.d(
TAG,
String.format(
"Update settings name=%s to value=%d", settingsName, settingsValue));
return true;
} catch (SecurityException e) {
Log.w(
TAG,
String.format(
"Failed to update settings name=%s to value=%d",
settingsName, settingsValue),
e);
return false;
}
}
}

View File

@@ -123,7 +123,8 @@ public class BatteryTipsController extends BasePreferenceController {
mCardPreference.setVisible(false);
if (mOnAnomalyConfirmListener != null) {
mOnAnomalyConfirmListener.onAnomalyConfirm();
} else if (mAnomalyEventWrapper.launchSubSetting()) {
} else if (mAnomalyEventWrapper.updateSystemSettingsIfAvailable()
|| mAnomalyEventWrapper.launchSubSetting()) {
mMetricsFeatureProvider.action(
/* attribution= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL,
/* action= */ SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT,