Add a Developer option of "Disable automatic update".

For devices using A/B update or update-on-boot feature, we need a
Developer option to prevent the system updates from being installed
automatically.

We store the "disabled" status internally to turn on the automatic
update by default. But we show the opposite "enabled" status on screen
based on UX comments.

Bug: 27193001
Change-Id: I36a08a2a08fd1ba0f8f3c4b3ae5a08dc50829cd2
This commit is contained in:
Tao Bao
2016-02-15 20:03:22 -08:00
parent 98f5b2ab66
commit 45a2c163c3
3 changed files with 33 additions and 0 deletions

View File

@@ -205,6 +205,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private static final String KEY_NIGHT_MODE = "night_mode";
private static final String KEY_CONVERT_FBE = "convert_to_file_encryption";
private static final String OTA_DISABLE_AUTOMATIC_UPDATE_KEY = "ota_disable_automatic_update";
private static final int RESULT_DEBUG_APP = 1000;
private static final int RESULT_MOCK_LOCATION_APP = 1001;
@@ -252,6 +254,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private SwitchPreference mLegacyDhcpClient;
private SwitchPreference mMobileDataAlwaysOn;
private SwitchPreference mBluetoothDisableAbsVolume;
private SwitchPreference mOtaDisableAutomaticUpdate;
private SwitchPreference mWifiAllowScansWithTraffic;
private SwitchPreference mStrictMode;
@@ -465,6 +468,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
removePreference(KEY_CONVERT_FBE);
}
mOtaDisableAutomaticUpdate = findAndInitSwitchPref(OTA_DISABLE_AUTOMATIC_UPDATE_KEY);
mNightModePreference = (DropDownPreference) findPreference(KEY_NIGHT_MODE);
final UiModeManager uiManager = (UiModeManager) getSystemService(
Context.UI_MODE_SERVICE);
@@ -698,6 +703,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
updateAppProcessLimitOptions();
updateShowAllANRsOptions();
updateVerifyAppsOverUsbOptions();
updateOtaDisableAutomaticUpdateOptions();
updateBugreportOptions();
updateForceRtlOptions();
updateLogdSizeValues();
@@ -949,6 +955,24 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
mVerifyAppsOverUsb.isChecked() ? 1 : 0);
}
private void updateOtaDisableAutomaticUpdateOptions() {
// We use the "disabled status" in code, but show the opposite text
// "Automatic system updates" on screen. So a value 0 indicates the
// automatic update is enabled.
updateSwitchPreference(mOtaDisableAutomaticUpdate, Settings.Global.getInt(
getActivity().getContentResolver(),
Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE, 0) != 1);
}
private void writeOtaDisableAutomaticUpdateOptions() {
// We use the "disabled status" in code, but show the opposite text
// "Automatic system updates" on screen. So a value 0 indicates the
// automatic update is enabled.
Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE,
mOtaDisableAutomaticUpdate.isChecked() ? 0 : 1);
}
private boolean enableVerifierSetting() {
final ContentResolver cr = getActivity().getContentResolver();
if (Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) == 0) {
@@ -1850,6 +1874,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
writeDebuggerOptions();
} else if (preference == mVerifyAppsOverUsb) {
writeVerifyAppsOverUsbOptions();
} else if (preference == mOtaDisableAutomaticUpdate) {
writeOtaDisableAutomaticUpdateOptions();
} else if (preference == mStrictMode) {
writeStrictModeVisualOptions();
} else if (preference == mPointerLocation) {