Loading res/layout/wifi_network_config.xml +2 −1 Original line number Diff line number Diff line Loading @@ -413,7 +413,8 @@ <LinearLayout android:id="@+id/metered_settings_fields" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/wifi_item"> style="@style/wifi_item" android:visibility="gone"> <TextView android:id="@+id/metered_settings_title" android:layout_width="wrap_content" Loading src/com/android/settings/wifi/WifiConfigController2.java +40 −37 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ import android.widget.ImageButton; import android.widget.Spinner; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.net.module.util.NetUtils; Loading Loading @@ -200,8 +201,10 @@ public class WifiConfigController2 implements TextWatcher, private TextView mDns2View; private Spinner mProxySettingsSpinner; @Nullable private Spinner mMeteredSettingsSpinner; private Spinner mHiddenSettingsSpinner; @Nullable private Spinner mPrivacySettingsSpinner; private TextView mHiddenWarningView; private TextView mProxyHostView; Loading @@ -216,48 +219,51 @@ public class WifiConfigController2 implements TextWatcher, private StaticIpConfiguration mStaticIpConfiguration = null; private String[] mLevels; private int mMode; private final int mMode; private final boolean mHideMeteredAndPrivacy; private final WifiManager mWifiManager; private final AndroidKeystoreAliasLoader mAndroidKeystoreAliasLoader; private TextView mSsidView; private Context mContext; private final Context mContext; @VisibleForTesting Integer[] mSecurityInPosition; private final WifiManager mWifiManager; private boolean mIsTrustOnFirstUseSupported; private final ArrayMap<Integer, SubscriptionInfo> mActiveSubscriptionInfos = new ArrayMap<>(); public WifiConfigController2(WifiConfigUiBase2 parent, View view, WifiEntry wifiEntry, int mode) { mConfigUi = parent; mView = view; mWifiEntry = wifiEntry; mContext = mConfigUi.getContext(); this(parent, view, wifiEntry, mode, false); } // Init Wi-Fi manager mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); initWifiConfigController2(wifiEntry, mode); public WifiConfigController2(WifiConfigUiBase2 parent, View view, WifiEntry wifiEntry, int mode, boolean hideMeteredAndPrivacy) { this(parent, view, wifiEntry, mode, hideMeteredAndPrivacy, parent.getContext().getSystemService(WifiManager.class), new AndroidKeystoreAliasLoader(KeyProperties.NAMESPACE_WIFI)); } @VisibleForTesting public WifiConfigController2(WifiConfigUiBase2 parent, View view, WifiEntry wifiEntry, int mode, WifiManager wifiManager) { int mode, boolean hideMeteredAndPrivacy, WifiManager wifiManager, AndroidKeystoreAliasLoader androidKeystoreAliasLoader) { mConfigUi = parent; mView = view; mWifiEntry = wifiEntry; mMode = mode; mHideMeteredAndPrivacy = hideMeteredAndPrivacy; mContext = mConfigUi.getContext(); mWifiManager = wifiManager; initWifiConfigController2(wifiEntry, mode); mAndroidKeystoreAliasLoader = androidKeystoreAliasLoader; initWifiConfigController2(wifiEntry); } private void initWifiConfigController2(WifiEntry wifiEntry, int mode) { private void initWifiConfigController2(WifiEntry wifiEntry) { mWifiEntrySecurity = (wifiEntry == null) ? WifiEntry.SECURITY_NONE : wifiEntry.getSecurity(); mMode = mode; mIsTrustOnFirstUseSupported = mWifiManager.isTrustOnFirstUseSupported(); final Resources res = mContext.getResources(); Loading Loading @@ -287,12 +293,14 @@ public class WifiConfigController2 implements TextWatcher, mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings); mProxySettingsSpinner.setOnItemSelectedListener(this); mSharedCheckBox = (CheckBox) mView.findViewById(R.id.shared); if (!mHideMeteredAndPrivacy) { mMeteredSettingsSpinner = mView.findViewById(R.id.metered_settings); mView.findViewById(R.id.metered_settings_fields).setVisibility(View.VISIBLE); } mHiddenSettingsSpinner = mView.findViewById(R.id.hidden_settings); if (!mHideMeteredAndPrivacy && mWifiManager.isConnectedMacRandomizationSupported()) { mPrivacySettingsSpinner = mView.findViewById(R.id.privacy_settings); if (mWifiManager.isConnectedMacRandomizationSupported()) { View privacySettingsLayout = mView.findViewById(R.id.privacy_settings_fields); privacySettingsLayout.setVisibility(View.VISIBLE); mView.findViewById(R.id.privacy_settings_fields).setVisibility(View.VISIBLE); } mHiddenSettingsSpinner.setOnItemSelectedListener(this); mHiddenWarningView = mView.findViewById(R.id.hidden_settings_warning); Loading @@ -313,14 +321,18 @@ public class WifiConfigController2 implements TextWatcher, boolean showAdvancedFields = false; if (mWifiEntry.isSaved()) { WifiConfiguration config = mWifiEntry.getWifiConfiguration(); if (mMeteredSettingsSpinner != null) { mMeteredSettingsSpinner.setSelection(config.meteredOverride); } mHiddenSettingsSpinner.setSelection(config.hiddenSSID ? HIDDEN_NETWORK : NOT_HIDDEN_NETWORK); if (mPrivacySettingsSpinner != null) { final int prefMacValue = WifiPrivacyPreferenceController2 .translateMacRandomizedValueToPrefValue(config.macRandomizationSetting); mPrivacySettingsSpinner.setSelection(prefMacValue); } if (config.getIpConfiguration().getIpAssignment() == IpAssignment.STATIC) { mIpSettingsSpinner.setSelection(STATIC_IP); Loading Loading @@ -1063,17 +1075,15 @@ public class WifiConfigController2 implements TextWatcher, if (refreshCertificates) { loadSims(); final AndroidKeystoreAliasLoader androidKeystoreAliasLoader = getAndroidKeystoreAliasLoader(); loadCertificates( mEapCaCertSpinner, androidKeystoreAliasLoader.getCaCertAliases(), mAndroidKeystoreAliasLoader.getCaCertAliases(), null /* noCertificateString */, false /* showMultipleCerts */, true /* showUsePreinstalledCertOption */); loadCertificates( mEapUserCertSpinner, androidKeystoreAliasLoader.getKeyCertAliases(), mAndroidKeystoreAliasLoader.getKeyCertAliases(), mDoNotProvideEapUserCertString, false /* showMultipleCerts */, false /* showUsePreinstalledCertOption */); Loading Loading @@ -1158,11 +1168,9 @@ public class WifiConfigController2 implements TextWatcher, setSelection(mEapCaCertSpinner, caCerts[0]); } else { // Reload the cert spinner with an extra "multiple certificates added" item. final AndroidKeystoreAliasLoader androidKeystoreAliasLoader = getAndroidKeystoreAliasLoader(); loadCertificates( mEapCaCertSpinner, androidKeystoreAliasLoader.getCaCertAliases(), mAndroidKeystoreAliasLoader.getCaCertAliases(), null /* noCertificateString */, true /* showMultipleCerts */, true /* showUsePreinstalledCertOption */); Loading Loading @@ -1501,11 +1509,6 @@ public class WifiConfigController2 implements TextWatcher, } } @VisibleForTesting AndroidKeystoreAliasLoader getAndroidKeystoreAliasLoader() { return new AndroidKeystoreAliasLoader(KeyProperties.NAMESPACE_WIFI); } @VisibleForTesting void loadSims() { List<SubscriptionInfo> activeSubscriptionInfos = mContext Loading src/com/android/settings/wifi/WifiDialog2.kt +2 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ class WifiDialog2 @JvmOverloads constructor( private val mode: Int, @StyleRes style: Int = 0, private val hideSubmitButton: Boolean = mode == WifiConfigUiBase2.MODE_VIEW, private val hideMeteredAndPrivacy: Boolean = false, ) : AlertDialog(context, style), WifiConfigUiBase2, DialogInterface.OnClickListener { /** * Host UI component of WifiDialog2 can receive callbacks by this interface. Loading Loading @@ -71,7 +72,7 @@ class WifiDialog2 @JvmOverloads constructor( setWindowsOverlay() view = layoutInflater.inflate(R.layout.wifi_dialog, null) setView(view) controller = WifiConfigController2(this, view, wifiEntry, mode) controller = WifiConfigController2(this, view, wifiEntry, mode, hideMeteredAndPrivacy) super.onCreate(savedInstanceState) if (hideSubmitButton) { controller.hideSubmitButton() Loading src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +10 −5 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -180,8 +181,14 @@ public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment impl } final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry(); return new WifiDialog2(getActivity(), this, wifiEntry, WifiConfigUiBase2.MODE_MODIFY); return new WifiDialog2( getActivity(), this, wifiEntry, WifiConfigUiBase2.MODE_MODIFY, 0, false, true); } @Override Loading Loading @@ -276,14 +283,12 @@ public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment impl // Sets callback listener for wifi dialog. mWifiDialogListeners.add(mWifiDetailPreferenceController2); mWifiDialogListeners.add(privacyController2); mWifiDialogListeners.add(meteredPreferenceController2); return mControllers; } @Override public void onSubmit(WifiDialog2 dialog) { public void onSubmit(@NonNull WifiDialog2 dialog) { for (WifiDialog2.WifiDialog2Listener listener : mWifiDialogListeners) { listener.onSubmit(dialog); } Loading src/com/android/settings/wifi/details2/WifiMeteredPreferenceController2.java +3 −38 Original line number Diff line number Diff line Loading @@ -18,26 +18,23 @@ package com.android.settings.wifi.details2; import android.app.backup.BackupManager; import android.content.Context; import android.net.wifi.WifiConfiguration; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiDialog2; import com.android.wifitrackerlib.WifiEntry; /** * A controller that controls whether the Wi-Fi network is metered or not. */ public class WifiMeteredPreferenceController2 extends BasePreferenceController implements Preference.OnPreferenceChangeListener, WifiDialog2.WifiDialog2Listener { Preference.OnPreferenceChangeListener { private static final String KEY_WIFI_METERED = "metered"; private final WifiEntry mWifiEntry; private Preference mPreference; public WifiMeteredPreferenceController2(Context context, WifiEntry wifiEntry) { super(context, KEY_WIFI_METERED); Loading @@ -59,7 +56,7 @@ public class WifiMeteredPreferenceController2 extends BasePreferenceController i } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) { if (mWifiEntry.isSaved() || mWifiEntry.isSubscription()) { mWifiEntry.setMeteredChoice(Integer.parseInt((String) newValue)); } Loading @@ -82,36 +79,4 @@ public class WifiMeteredPreferenceController2 extends BasePreferenceController i private void updateSummary(ListPreference preference, int meteredOverride) { preference.setSummary(preference.getEntries()[meteredOverride]); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void onSubmit(WifiDialog2 dialog) { if (dialog.getController() != null && mWifiEntry.canSetMeteredChoice()) { final WifiConfiguration newConfig = dialog.getController().getConfig(); if (newConfig == null) { return; } if (getWifiEntryMeteredChoice(newConfig) != mWifiEntry.getMeteredChoice()) { mWifiEntry.setMeteredChoice(getWifiEntryMeteredChoice(newConfig)); onPreferenceChange(mPreference, String.valueOf(newConfig.meteredOverride)); } } } private int getWifiEntryMeteredChoice(WifiConfiguration wifiConfiguration) { switch (wifiConfiguration.meteredOverride) { case WifiConfiguration.METERED_OVERRIDE_METERED: return WifiEntry.METERED_CHOICE_METERED; case WifiConfiguration.METERED_OVERRIDE_NOT_METERED: return WifiEntry.METERED_CHOICE_UNMETERED; default: return WifiEntry.METERED_CHOICE_AUTO; } } } Loading
res/layout/wifi_network_config.xml +2 −1 Original line number Diff line number Diff line Loading @@ -413,7 +413,8 @@ <LinearLayout android:id="@+id/metered_settings_fields" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/wifi_item"> style="@style/wifi_item" android:visibility="gone"> <TextView android:id="@+id/metered_settings_title" android:layout_width="wrap_content" Loading
src/com/android/settings/wifi/WifiConfigController2.java +40 −37 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ import android.widget.ImageButton; import android.widget.Spinner; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.net.module.util.NetUtils; Loading Loading @@ -200,8 +201,10 @@ public class WifiConfigController2 implements TextWatcher, private TextView mDns2View; private Spinner mProxySettingsSpinner; @Nullable private Spinner mMeteredSettingsSpinner; private Spinner mHiddenSettingsSpinner; @Nullable private Spinner mPrivacySettingsSpinner; private TextView mHiddenWarningView; private TextView mProxyHostView; Loading @@ -216,48 +219,51 @@ public class WifiConfigController2 implements TextWatcher, private StaticIpConfiguration mStaticIpConfiguration = null; private String[] mLevels; private int mMode; private final int mMode; private final boolean mHideMeteredAndPrivacy; private final WifiManager mWifiManager; private final AndroidKeystoreAliasLoader mAndroidKeystoreAliasLoader; private TextView mSsidView; private Context mContext; private final Context mContext; @VisibleForTesting Integer[] mSecurityInPosition; private final WifiManager mWifiManager; private boolean mIsTrustOnFirstUseSupported; private final ArrayMap<Integer, SubscriptionInfo> mActiveSubscriptionInfos = new ArrayMap<>(); public WifiConfigController2(WifiConfigUiBase2 parent, View view, WifiEntry wifiEntry, int mode) { mConfigUi = parent; mView = view; mWifiEntry = wifiEntry; mContext = mConfigUi.getContext(); this(parent, view, wifiEntry, mode, false); } // Init Wi-Fi manager mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); initWifiConfigController2(wifiEntry, mode); public WifiConfigController2(WifiConfigUiBase2 parent, View view, WifiEntry wifiEntry, int mode, boolean hideMeteredAndPrivacy) { this(parent, view, wifiEntry, mode, hideMeteredAndPrivacy, parent.getContext().getSystemService(WifiManager.class), new AndroidKeystoreAliasLoader(KeyProperties.NAMESPACE_WIFI)); } @VisibleForTesting public WifiConfigController2(WifiConfigUiBase2 parent, View view, WifiEntry wifiEntry, int mode, WifiManager wifiManager) { int mode, boolean hideMeteredAndPrivacy, WifiManager wifiManager, AndroidKeystoreAliasLoader androidKeystoreAliasLoader) { mConfigUi = parent; mView = view; mWifiEntry = wifiEntry; mMode = mode; mHideMeteredAndPrivacy = hideMeteredAndPrivacy; mContext = mConfigUi.getContext(); mWifiManager = wifiManager; initWifiConfigController2(wifiEntry, mode); mAndroidKeystoreAliasLoader = androidKeystoreAliasLoader; initWifiConfigController2(wifiEntry); } private void initWifiConfigController2(WifiEntry wifiEntry, int mode) { private void initWifiConfigController2(WifiEntry wifiEntry) { mWifiEntrySecurity = (wifiEntry == null) ? WifiEntry.SECURITY_NONE : wifiEntry.getSecurity(); mMode = mode; mIsTrustOnFirstUseSupported = mWifiManager.isTrustOnFirstUseSupported(); final Resources res = mContext.getResources(); Loading Loading @@ -287,12 +293,14 @@ public class WifiConfigController2 implements TextWatcher, mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings); mProxySettingsSpinner.setOnItemSelectedListener(this); mSharedCheckBox = (CheckBox) mView.findViewById(R.id.shared); if (!mHideMeteredAndPrivacy) { mMeteredSettingsSpinner = mView.findViewById(R.id.metered_settings); mView.findViewById(R.id.metered_settings_fields).setVisibility(View.VISIBLE); } mHiddenSettingsSpinner = mView.findViewById(R.id.hidden_settings); if (!mHideMeteredAndPrivacy && mWifiManager.isConnectedMacRandomizationSupported()) { mPrivacySettingsSpinner = mView.findViewById(R.id.privacy_settings); if (mWifiManager.isConnectedMacRandomizationSupported()) { View privacySettingsLayout = mView.findViewById(R.id.privacy_settings_fields); privacySettingsLayout.setVisibility(View.VISIBLE); mView.findViewById(R.id.privacy_settings_fields).setVisibility(View.VISIBLE); } mHiddenSettingsSpinner.setOnItemSelectedListener(this); mHiddenWarningView = mView.findViewById(R.id.hidden_settings_warning); Loading @@ -313,14 +321,18 @@ public class WifiConfigController2 implements TextWatcher, boolean showAdvancedFields = false; if (mWifiEntry.isSaved()) { WifiConfiguration config = mWifiEntry.getWifiConfiguration(); if (mMeteredSettingsSpinner != null) { mMeteredSettingsSpinner.setSelection(config.meteredOverride); } mHiddenSettingsSpinner.setSelection(config.hiddenSSID ? HIDDEN_NETWORK : NOT_HIDDEN_NETWORK); if (mPrivacySettingsSpinner != null) { final int prefMacValue = WifiPrivacyPreferenceController2 .translateMacRandomizedValueToPrefValue(config.macRandomizationSetting); mPrivacySettingsSpinner.setSelection(prefMacValue); } if (config.getIpConfiguration().getIpAssignment() == IpAssignment.STATIC) { mIpSettingsSpinner.setSelection(STATIC_IP); Loading Loading @@ -1063,17 +1075,15 @@ public class WifiConfigController2 implements TextWatcher, if (refreshCertificates) { loadSims(); final AndroidKeystoreAliasLoader androidKeystoreAliasLoader = getAndroidKeystoreAliasLoader(); loadCertificates( mEapCaCertSpinner, androidKeystoreAliasLoader.getCaCertAliases(), mAndroidKeystoreAliasLoader.getCaCertAliases(), null /* noCertificateString */, false /* showMultipleCerts */, true /* showUsePreinstalledCertOption */); loadCertificates( mEapUserCertSpinner, androidKeystoreAliasLoader.getKeyCertAliases(), mAndroidKeystoreAliasLoader.getKeyCertAliases(), mDoNotProvideEapUserCertString, false /* showMultipleCerts */, false /* showUsePreinstalledCertOption */); Loading Loading @@ -1158,11 +1168,9 @@ public class WifiConfigController2 implements TextWatcher, setSelection(mEapCaCertSpinner, caCerts[0]); } else { // Reload the cert spinner with an extra "multiple certificates added" item. final AndroidKeystoreAliasLoader androidKeystoreAliasLoader = getAndroidKeystoreAliasLoader(); loadCertificates( mEapCaCertSpinner, androidKeystoreAliasLoader.getCaCertAliases(), mAndroidKeystoreAliasLoader.getCaCertAliases(), null /* noCertificateString */, true /* showMultipleCerts */, true /* showUsePreinstalledCertOption */); Loading Loading @@ -1501,11 +1509,6 @@ public class WifiConfigController2 implements TextWatcher, } } @VisibleForTesting AndroidKeystoreAliasLoader getAndroidKeystoreAliasLoader() { return new AndroidKeystoreAliasLoader(KeyProperties.NAMESPACE_WIFI); } @VisibleForTesting void loadSims() { List<SubscriptionInfo> activeSubscriptionInfos = mContext Loading
src/com/android/settings/wifi/WifiDialog2.kt +2 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ class WifiDialog2 @JvmOverloads constructor( private val mode: Int, @StyleRes style: Int = 0, private val hideSubmitButton: Boolean = mode == WifiConfigUiBase2.MODE_VIEW, private val hideMeteredAndPrivacy: Boolean = false, ) : AlertDialog(context, style), WifiConfigUiBase2, DialogInterface.OnClickListener { /** * Host UI component of WifiDialog2 can receive callbacks by this interface. Loading Loading @@ -71,7 +72,7 @@ class WifiDialog2 @JvmOverloads constructor( setWindowsOverlay() view = layoutInflater.inflate(R.layout.wifi_dialog, null) setView(view) controller = WifiConfigController2(this, view, wifiEntry, mode) controller = WifiConfigController2(this, view, wifiEntry, mode, hideMeteredAndPrivacy) super.onCreate(savedInstanceState) if (hideSubmitButton) { controller.hideSubmitButton() Loading
src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +10 −5 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -180,8 +181,14 @@ public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment impl } final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry(); return new WifiDialog2(getActivity(), this, wifiEntry, WifiConfigUiBase2.MODE_MODIFY); return new WifiDialog2( getActivity(), this, wifiEntry, WifiConfigUiBase2.MODE_MODIFY, 0, false, true); } @Override Loading Loading @@ -276,14 +283,12 @@ public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment impl // Sets callback listener for wifi dialog. mWifiDialogListeners.add(mWifiDetailPreferenceController2); mWifiDialogListeners.add(privacyController2); mWifiDialogListeners.add(meteredPreferenceController2); return mControllers; } @Override public void onSubmit(WifiDialog2 dialog) { public void onSubmit(@NonNull WifiDialog2 dialog) { for (WifiDialog2.WifiDialog2Listener listener : mWifiDialogListeners) { listener.onSubmit(dialog); } Loading
src/com/android/settings/wifi/details2/WifiMeteredPreferenceController2.java +3 −38 Original line number Diff line number Diff line Loading @@ -18,26 +18,23 @@ package com.android.settings.wifi.details2; import android.app.backup.BackupManager; import android.content.Context; import android.net.wifi.WifiConfiguration; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; import com.android.settings.wifi.WifiDialog2; import com.android.wifitrackerlib.WifiEntry; /** * A controller that controls whether the Wi-Fi network is metered or not. */ public class WifiMeteredPreferenceController2 extends BasePreferenceController implements Preference.OnPreferenceChangeListener, WifiDialog2.WifiDialog2Listener { Preference.OnPreferenceChangeListener { private static final String KEY_WIFI_METERED = "metered"; private final WifiEntry mWifiEntry; private Preference mPreference; public WifiMeteredPreferenceController2(Context context, WifiEntry wifiEntry) { super(context, KEY_WIFI_METERED); Loading @@ -59,7 +56,7 @@ public class WifiMeteredPreferenceController2 extends BasePreferenceController i } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) { if (mWifiEntry.isSaved() || mWifiEntry.isSubscription()) { mWifiEntry.setMeteredChoice(Integer.parseInt((String) newValue)); } Loading @@ -82,36 +79,4 @@ public class WifiMeteredPreferenceController2 extends BasePreferenceController i private void updateSummary(ListPreference preference, int meteredOverride) { preference.setSummary(preference.getEntries()[meteredOverride]); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void onSubmit(WifiDialog2 dialog) { if (dialog.getController() != null && mWifiEntry.canSetMeteredChoice()) { final WifiConfiguration newConfig = dialog.getController().getConfig(); if (newConfig == null) { return; } if (getWifiEntryMeteredChoice(newConfig) != mWifiEntry.getMeteredChoice()) { mWifiEntry.setMeteredChoice(getWifiEntryMeteredChoice(newConfig)); onPreferenceChange(mPreference, String.valueOf(newConfig.meteredOverride)); } } } private int getWifiEntryMeteredChoice(WifiConfiguration wifiConfiguration) { switch (wifiConfiguration.meteredOverride) { case WifiConfiguration.METERED_OVERRIDE_METERED: return WifiEntry.METERED_CHOICE_METERED; case WifiConfiguration.METERED_OVERRIDE_NOT_METERED: return WifiEntry.METERED_CHOICE_UNMETERED; default: return WifiEntry.METERED_CHOICE_AUTO; } } }