Merge "Create a new key to backup Sim-specific data."

This commit is contained in:
Treehugger Robot
2021-12-02 19:16:07 +00:00
committed by Gerrit Code Review

View File

@@ -98,6 +98,10 @@ public class SettingsBackupAgent extends BackupAgentHelper {
private static final String KEY_WIFI_NEW_CONFIG = "wifi_new_config"; private static final String KEY_WIFI_NEW_CONFIG = "wifi_new_config";
private static final String KEY_DEVICE_SPECIFIC_CONFIG = "device_specific_config"; private static final String KEY_DEVICE_SPECIFIC_CONFIG = "device_specific_config";
private static final String KEY_SIM_SPECIFIC_SETTINGS = "sim_specific_settings"; private static final String KEY_SIM_SPECIFIC_SETTINGS = "sim_specific_settings";
// Restoring sim-specific data backed up from newer Android version to Android 12 was causing a
// fatal crash. Creating a backup with a different key will prevent Android 12 versions from
// restoring this data.
private static final String KEY_SIM_SPECIFIC_SETTINGS_2 = "sim_specific_settings_2";
// Versioning of the state file. Increment this version // Versioning of the state file. Increment this version
// number any time the set of state items is altered. // number any time the set of state items is altered.
@@ -253,7 +257,7 @@ public class SettingsBackupAgent extends BackupAgentHelper {
deviceSpecificInformation, data); deviceSpecificInformation, data);
stateChecksums[STATE_SIM_SPECIFIC_SETTINGS] = stateChecksums[STATE_SIM_SPECIFIC_SETTINGS] =
writeIfChanged(stateChecksums[STATE_SIM_SPECIFIC_SETTINGS], writeIfChanged(stateChecksums[STATE_SIM_SPECIFIC_SETTINGS],
KEY_SIM_SPECIFIC_SETTINGS, simSpecificSettingsData, data); KEY_SIM_SPECIFIC_SETTINGS_2, simSpecificSettingsData, data);
writeNewChecksums(stateChecksums, newState); writeNewChecksums(stateChecksums, newState);
} }
@@ -395,6 +399,9 @@ public class SettingsBackupAgent extends BackupAgentHelper {
break; break;
case KEY_SIM_SPECIFIC_SETTINGS: case KEY_SIM_SPECIFIC_SETTINGS:
// Intentional fall through so that sim-specific backups from Android 12 will
// also be restored on newer Android versions.
case KEY_SIM_SPECIFIC_SETTINGS_2:
byte[] restoredSimSpecificSettings = new byte[size]; byte[] restoredSimSpecificSettings = new byte[size];
data.readEntityData(restoredSimSpecificSettings, 0, size); data.readEntityData(restoredSimSpecificSettings, 0, size);
restoreSimSpecificSettings(restoredSimSpecificSettings); restoreSimSpecificSettings(restoredSimSpecificSettings);