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:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user