Loading packages/SettingsProvider/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ android:process="system" android:backupAgent="SettingsBackupAgent" android:killAfterRestore="false" android:restoreAnyVersion="true" android:icon="@mipmap/ic_launcher_settings" android:defaultToDeviceProtectedStorage="true" android:directBootAware="true"> Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +23 −0 Original line number Diff line number Diff line Loading @@ -31,10 +31,12 @@ import android.net.NetworkPolicyManager; import android.net.Uri; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Build; import android.os.ParcelFileDescriptor; import android.os.UserHandle; import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.BackupUtils; import android.util.Log; Loading @@ -50,6 +52,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; Loading Loading @@ -147,6 +150,13 @@ public class SettingsBackupAgent extends BackupAgentHelper { // stored in the full-backup tarfile as well, so should not be changed. private static final String STAGE_FILE = "flattened-data"; // List of keys that support restore to lower version of the SDK, introduced in Android P private static final ArraySet<String> RESTORE_FROM_HIGHER_SDK_INT_SUPPORTED_KEYS = new ArraySet<String>(Arrays.asList(new String[] { KEY_NETWORK_POLICIES, KEY_WIFI_NEW_CONFIG, })); private SettingsHelper mSettingsHelper; private WifiManager mWifiManager; Loading Loading @@ -209,6 +219,10 @@ public class SettingsBackupAgent extends BackupAgentHelper { public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException { if (DEBUG) { Log.d(TAG, "onRestore(): appVersionCode: " + appVersionCode + "; Build.VERSION.SDK_INT: " + Build.VERSION.SDK_INT); } // versionCode of com.android.providers.settings corresponds to SDK_INT mRestoredFromSdkInt = appVersionCode; Loading @@ -221,6 +235,15 @@ public class SettingsBackupAgent extends BackupAgentHelper { while (data.readNextHeader()) { final String key = data.getKey(); final int size = data.getDataSize(); // bail out of restoring from higher SDK_INT version for unsupported keys if (appVersionCode > Build.VERSION.SDK_INT && !RESTORE_FROM_HIGHER_SDK_INT_SUPPORTED_KEYS.contains(key)) { Log.w(TAG, "Not restoring unrecognized key '" + key + "' from future version " + appVersionCode); continue; } switch (key) { case KEY_SYSTEM : restoreSettings(data, Settings.System.CONTENT_URI, movedToGlobal); Loading Loading
packages/SettingsProvider/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ android:process="system" android:backupAgent="SettingsBackupAgent" android:killAfterRestore="false" android:restoreAnyVersion="true" android:icon="@mipmap/ic_launcher_settings" android:defaultToDeviceProtectedStorage="true" android:directBootAware="true"> Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +23 −0 Original line number Diff line number Diff line Loading @@ -31,10 +31,12 @@ import android.net.NetworkPolicyManager; import android.net.Uri; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Build; import android.os.ParcelFileDescriptor; import android.os.UserHandle; import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.BackupUtils; import android.util.Log; Loading @@ -50,6 +52,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; Loading Loading @@ -147,6 +150,13 @@ public class SettingsBackupAgent extends BackupAgentHelper { // stored in the full-backup tarfile as well, so should not be changed. private static final String STAGE_FILE = "flattened-data"; // List of keys that support restore to lower version of the SDK, introduced in Android P private static final ArraySet<String> RESTORE_FROM_HIGHER_SDK_INT_SUPPORTED_KEYS = new ArraySet<String>(Arrays.asList(new String[] { KEY_NETWORK_POLICIES, KEY_WIFI_NEW_CONFIG, })); private SettingsHelper mSettingsHelper; private WifiManager mWifiManager; Loading Loading @@ -209,6 +219,10 @@ public class SettingsBackupAgent extends BackupAgentHelper { public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException { if (DEBUG) { Log.d(TAG, "onRestore(): appVersionCode: " + appVersionCode + "; Build.VERSION.SDK_INT: " + Build.VERSION.SDK_INT); } // versionCode of com.android.providers.settings corresponds to SDK_INT mRestoredFromSdkInt = appVersionCode; Loading @@ -221,6 +235,15 @@ public class SettingsBackupAgent extends BackupAgentHelper { while (data.readNextHeader()) { final String key = data.getKey(); final int size = data.getDataSize(); // bail out of restoring from higher SDK_INT version for unsupported keys if (appVersionCode > Build.VERSION.SDK_INT && !RESTORE_FROM_HIGHER_SDK_INT_SUPPORTED_KEYS.contains(key)) { Log.w(TAG, "Not restoring unrecognized key '" + key + "' from future version " + appVersionCode); continue; } switch (key) { case KEY_SYSTEM : restoreSettings(data, Settings.System.CONTENT_URI, movedToGlobal); Loading