diff options
-rw-r--r-- | res/values/config.xml | 5 | ||||
-rw-r--r-- | src/org/protonaosp/deviceconfig/BootReceiver.java | 13 |
2 files changed, 14 insertions, 4 deletions
diff --git a/res/values/config.xml b/res/values/config.xml index 88ac362..d33f44e 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -15,6 +15,11 @@ limitations under the License. --> <resources> + <!-- Configs for all devices. Provisioned on every boot. --> <string-array name="configs_base" /> + <!-- Configs for all devices. Only provisioned if not already set. --> + <string-array name="configs_base_soft" /> + + <!-- Device-specific configs, for overlaying in device trees. Provisioned on every boot. --> <string-array name="configs_device" /> </resources> diff --git a/src/org/protonaosp/deviceconfig/BootReceiver.java b/src/org/protonaosp/deviceconfig/BootReceiver.java index 12ee2d2..d241ff3 100644 --- a/src/org/protonaosp/deviceconfig/BootReceiver.java +++ b/src/org/protonaosp/deviceconfig/BootReceiver.java @@ -34,11 +34,13 @@ public class BootReceiver extends BroadcastReceiver { } private void updateDefaultConfigs(Context context) { - updateConfig(context, R.array.configs_base); - updateConfig(context, R.array.configs_device); + updateConfig(context, R.array.configs_base, false); + updateConfig(context, R.array.configs_base_soft, true); + + updateConfig(context, R.array.configs_device, false); } - private void updateConfig(Context context, int configArray) { + private void updateConfig(Context context, int configArray, boolean isSoft) { // Set current properties String[] rawProperties = context.getResources().getStringArray(configArray); for (String property : rawProperties) { @@ -54,7 +56,10 @@ public class BootReceiver extends BroadcastReceiver { value = kv[1]; } - DeviceConfig.setProperty(namespace, key, value, false); + // Skip soft configs that already have values + if (!isSoft || DeviceConfig.getString(namespace, key, null) == null) { + DeviceConfig.setProperty(namespace, key, value, false); + } } } } |