diff options
| -rw-r--r-- | core/java/android/provider/Settings.java | 3 | ||||
| -rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 641de4a71142..084f37f1a610 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -98,7 +98,8 @@ import java.util.Set; * The Settings provider contains global system-level device preferences. */ public final class Settings { - private static final boolean DEFAULT_OVERRIDEABLE_BY_RESTORE = false; + /** @hide */ + public static final boolean DEFAULT_OVERRIDEABLE_BY_RESTORE = false; // Intent actions for Settings diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 2dc6f393f7cc..5a9d7497b641 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -2778,6 +2778,11 @@ public class SettingsProvider extends ContentProvider { public boolean insertSettingLocked(int type, int userId, String name, String value, String tag, boolean makeDefault, boolean forceNonSystemPackage, String packageName, boolean forceNotify, Set<String> criticalSettings, boolean overrideableByRestore) { + if (overrideableByRestore != Settings.DEFAULT_OVERRIDEABLE_BY_RESTORE) { + getContext().enforceCallingOrSelfPermission( + Manifest.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE, + "Caller is not allowed to modify settings overrideable by restore"); + } final int key = makeKey(type, userId); boolean success = false; |