Skip to content

Commit 06efb53

Browse files
author
Christopher Tate
committed
Per-user settings
Each user has its own Settings.System.* and Settings.Secure.* namespace now. In addition, this CL introduces the new Settings.Global.* namespace, which contains a number of previously-elsewhere named settings entities; these Global.* entities are common to all users. Because these elements have been moved from their prior existence in the other namespaces, attempts to access them under their old names and namespaces are detected and redirected (with appropriate compile-time and logging messages) to their new homes. The new Global.* namespace can only be written by system-level code, just like the existing Secure.* namespace. If an app attempts to write a key that was previously in the System.* namespace but has been moved to the Global.* namespace, then a warning is logged and no write is performed; the action is a no-op. (The app is explicitly not crashed, to avoid breaking well-behaved apps that can't know any better.) There is also now a hidden API for getting/setting settings entities associated with a user other than the caller's. Reading/writing data for a user other than yourself requires the signature-level INTERACT_ACROSS_USERS_FULL permission. Manipulating data for a different user cannot be done via the ContentProvider query() / insert() APIs; you must use the Settings.get/put APIs for that degree of control. In general, use of the get/set API is *strongly* preferred over query-type access to Settings. Bug 6985398 Change-Id: Ibee54ddff99fb847c8c2479c23b50f1e7524d724
1 parent 9e130e7 commit 06efb53

File tree

4 files changed

+2457
-570
lines changed

4 files changed

+2457
-570
lines changed

api/current.txt

Lines changed: 72 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18718,6 +18718,53 @@ package android.provider {
1871818718
field public static final java.lang.String EXTRA_INPUT_METHOD_ID = "input_method_id";
1871918719
}
1872018720

18721+
public static final class Settings.Global extends android.provider.Settings.NameValueTable {
18722+
ctor public Settings.Global();
18723+
method public static float getFloat(android.content.ContentResolver, java.lang.String, float);
18724+
method public static float getFloat(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
18725+
method public static int getInt(android.content.ContentResolver, java.lang.String, int);
18726+
method public static int getInt(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
18727+
method public static long getLong(android.content.ContentResolver, java.lang.String, long);
18728+
method public static long getLong(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
18729+
method public static synchronized java.lang.String getString(android.content.ContentResolver, java.lang.String);
18730+
method public static android.net.Uri getUriFor(java.lang.String);
18731+
method public static boolean putFloat(android.content.ContentResolver, java.lang.String, float);
18732+
method public static boolean putInt(android.content.ContentResolver, java.lang.String, int);
18733+
method public static boolean putLong(android.content.ContentResolver, java.lang.String, long);
18734+
method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String);
18735+
field public static final java.lang.String ADB_ENABLED = "adb_enabled";
18736+
field public static final java.lang.String AIRPLANE_MODE_ON = "airplane_mode_on";
18737+
field public static final java.lang.String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
18738+
field public static final java.lang.String AUTO_TIME = "auto_time";
18739+
field public static final java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
18740+
field public static final java.lang.String BLUETOOTH_ON = "bluetooth_on";
18741+
field public static final android.net.Uri CONTENT_URI;
18742+
field public static final java.lang.String DATA_ROAMING = "data_roaming";
18743+
field public static final java.lang.String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
18744+
field public static final java.lang.String DEVICE_PROVISIONED = "device_provisioned";
18745+
field public static final java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
18746+
field public static final java.lang.String NETWORK_PREFERENCE = "network_preference";
18747+
field public static final java.lang.String RADIO_BLUETOOTH = "bluetooth";
18748+
field public static final java.lang.String RADIO_CELL = "cell";
18749+
field public static final java.lang.String RADIO_NFC = "nfc";
18750+
field public static final java.lang.String RADIO_WIFI = "wifi";
18751+
field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
18752+
field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_global_version";
18753+
field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
18754+
field public static final java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
18755+
field public static final java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
18756+
field public static final java.lang.String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
18757+
field public static final java.lang.String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
18758+
field public static final java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
18759+
field public static final java.lang.String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
18760+
field public static final java.lang.String WIFI_ON = "wifi_on";
18761+
field public static final java.lang.String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
18762+
field public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
18763+
field public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
18764+
field public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
18765+
field public static final java.lang.String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
18766+
}
18767+
1872118768
public static class Settings.NameValueTable implements android.provider.BaseColumns {
1872218769
ctor public Settings.NameValueTable();
1872318770
method public static android.net.Uri getUriFor(android.net.Uri, java.lang.String);
@@ -18744,28 +18791,28 @@ package android.provider {
1874418791
method public static final void setLocationProviderEnabled(android.content.ContentResolver, java.lang.String, boolean);
1874518792
field public static final java.lang.String ACCESSIBILITY_ENABLED = "accessibility_enabled";
1874618793
field public static final java.lang.String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
18747-
field public static final java.lang.String ADB_ENABLED = "adb_enabled";
18794+
field public static final deprecated java.lang.String ADB_ENABLED = "adb_enabled";
1874818795
field public static final java.lang.String ALLOWED_GEOLOCATION_ORIGINS = "allowed_geolocation_origins";
1874918796
field public static final java.lang.String ALLOW_MOCK_LOCATION = "mock_location";
1875018797
field public static final java.lang.String ANDROID_ID = "android_id";
1875118798
field public static final deprecated java.lang.String BACKGROUND_DATA = "background_data";
18752-
field public static final java.lang.String BLUETOOTH_ON = "bluetooth_on";
18799+
field public static final deprecated java.lang.String BLUETOOTH_ON = "bluetooth_on";
1875318800
field public static final android.net.Uri CONTENT_URI;
18754-
field public static final java.lang.String DATA_ROAMING = "data_roaming";
18801+
field public static final deprecated java.lang.String DATA_ROAMING = "data_roaming";
1875518802
field public static final java.lang.String DEFAULT_INPUT_METHOD = "default_input_method";
18756-
field public static final java.lang.String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
18757-
field public static final java.lang.String DEVICE_PROVISIONED = "device_provisioned";
18803+
field public static final deprecated java.lang.String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
18804+
field public static final deprecated java.lang.String DEVICE_PROVISIONED = "device_provisioned";
1875818805
field public static final java.lang.String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
1875918806
field public static final java.lang.String ENABLED_INPUT_METHODS = "enabled_input_methods";
1876018807
field public static final java.lang.String HTTP_PROXY = "http_proxy";
1876118808
field public static final java.lang.String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
18762-
field public static final java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
18809+
field public static final deprecated java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
1876318810
field public static final java.lang.String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
1876418811
field public static final java.lang.String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
1876518812
field public static final java.lang.String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
1876618813
field public static final java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
1876718814
field public static final deprecated java.lang.String LOGGING_ID = "logging_id";
18768-
field public static final java.lang.String NETWORK_PREFERENCE = "network_preference";
18815+
field public static final deprecated java.lang.String NETWORK_PREFERENCE = "network_preference";
1876918816
field public static final java.lang.String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
1877018817
field public static final java.lang.String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
1877118818
field public static final java.lang.String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
@@ -18781,9 +18828,9 @@ package android.provider {
1878118828
field public static final deprecated java.lang.String TTS_DEFAULT_VARIANT = "tts_default_variant";
1878218829
field public static final java.lang.String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
1878318830
field public static final deprecated java.lang.String TTS_USE_DEFAULTS = "tts_use_defaults";
18784-
field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
18785-
field public static final java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
18786-
field public static final java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
18831+
field public static final deprecated java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
18832+
field public static final deprecated java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
18833+
field public static final deprecated java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
1878718834
field public static final java.lang.String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
1878818835
field public static final java.lang.String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
1878918836
field public static final java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
@@ -18816,26 +18863,26 @@ package android.provider {
1881618863
method public static int getInt(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
1881718864
method public static long getLong(android.content.ContentResolver, java.lang.String, long);
1881818865
method public static long getLong(android.content.ContentResolver, java.lang.String) throws android.provider.Settings.SettingNotFoundException;
18819-
method public static boolean getShowGTalkServiceStatus(android.content.ContentResolver);
18866+
method public static deprecated boolean getShowGTalkServiceStatus(android.content.ContentResolver);
1882018867
method public static synchronized java.lang.String getString(android.content.ContentResolver, java.lang.String);
1882118868
method public static android.net.Uri getUriFor(java.lang.String);
1882218869
method public static boolean putConfiguration(android.content.ContentResolver, android.content.res.Configuration);
1882318870
method public static boolean putFloat(android.content.ContentResolver, java.lang.String, float);
1882418871
method public static boolean putInt(android.content.ContentResolver, java.lang.String, int);
1882518872
method public static boolean putLong(android.content.ContentResolver, java.lang.String, long);
1882618873
method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String);
18827-
method public static void setShowGTalkServiceStatus(android.content.ContentResolver, boolean);
18874+
method public static deprecated void setShowGTalkServiceStatus(android.content.ContentResolver, boolean);
1882818875
field public static final java.lang.String ACCELEROMETER_ROTATION = "accelerometer_rotation";
1882918876
field public static final deprecated java.lang.String ADB_ENABLED = "adb_enabled";
18830-
field public static final java.lang.String AIRPLANE_MODE_ON = "airplane_mode_on";
18831-
field public static final java.lang.String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
18877+
field public static final deprecated java.lang.String AIRPLANE_MODE_ON = "airplane_mode_on";
18878+
field public static final deprecated java.lang.String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
1883218879
field public static final java.lang.String ALARM_ALERT = "alarm_alert";
1883318880
field public static final java.lang.String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
1883418881
field public static final deprecated java.lang.String ANDROID_ID = "android_id";
1883518882
field public static final java.lang.String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
1883618883
field public static final java.lang.String APPEND_FOR_LAST_AUDIBLE = "_last_audible";
18837-
field public static final java.lang.String AUTO_TIME = "auto_time";
18838-
field public static final java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
18884+
field public static final deprecated java.lang.String AUTO_TIME = "auto_time";
18885+
field public static final deprecated java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
1883918886
field public static final java.lang.String BLUETOOTH_DISCOVERABILITY = "bluetooth_discoverability";
1884018887
field public static final java.lang.String BLUETOOTH_DISCOVERABILITY_TIMEOUT = "bluetooth_discoverability_timeout";
1884118888
field public static final deprecated java.lang.String BLUETOOTH_ON = "bluetooth_on";
@@ -18868,10 +18915,10 @@ package android.provider {
1886818915
field public static final deprecated java.lang.String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
1886918916
field public static final deprecated java.lang.String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
1887018917
field public static final deprecated java.lang.String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
18871-
field public static final java.lang.String RADIO_BLUETOOTH = "bluetooth";
18872-
field public static final java.lang.String RADIO_CELL = "cell";
18873-
field public static final java.lang.String RADIO_NFC = "nfc";
18874-
field public static final java.lang.String RADIO_WIFI = "wifi";
18918+
field public static final deprecated java.lang.String RADIO_BLUETOOTH = "bluetooth";
18919+
field public static final deprecated java.lang.String RADIO_CELL = "cell";
18920+
field public static final deprecated java.lang.String RADIO_NFC = "nfc";
18921+
field public static final deprecated java.lang.String RADIO_WIFI = "wifi";
1887518922
field public static final java.lang.String RINGTONE = "ringtone";
1887618923
field public static final java.lang.String SCREEN_BRIGHTNESS = "screen_brightness";
1887718924
field public static final java.lang.String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
@@ -18884,7 +18931,7 @@ package android.provider {
1888418931
field public static final java.lang.String SHOW_PROCESSES = "show_processes";
1888518932
field public static final deprecated java.lang.String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
1888618933
field public static final java.lang.String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
18887-
field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
18934+
field public static final deprecated java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
1888818935
field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_system_version";
1888918936
field public static final java.lang.String TEXT_AUTO_CAPS = "auto_caps";
1889018937
field public static final java.lang.String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
@@ -18912,10 +18959,10 @@ package android.provider {
1891218959
field public static final deprecated java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
1891318960
field public static final deprecated java.lang.String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
1891418961
field public static final deprecated java.lang.String WIFI_ON = "wifi_on";
18915-
field public static final java.lang.String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
18916-
field public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
18917-
field public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
18918-
field public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
18962+
field public static final deprecated java.lang.String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
18963+
field public static final deprecated int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
18964+
field public static final deprecated int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
18965+
field public static final deprecated int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
1891918966
field public static final java.lang.String WIFI_STATIC_DNS1 = "wifi_static_dns1";
1892018967
field public static final java.lang.String WIFI_STATIC_DNS2 = "wifi_static_dns2";
1892118968
field public static final java.lang.String WIFI_STATIC_GATEWAY = "wifi_static_gateway";

0 commit comments

Comments
 (0)