blob: 0cc3255a0ec3865e04df11a5ae6c97fd040cea04 [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/*
2 * Copyright (C) 2006 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.provider;
18
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080019import android.annotation.SdkConstant;
20import android.annotation.SdkConstant.SdkConstantType;
Bryce Leecdfebd62015-02-02 08:19:11 -080021import android.annotation.SystemApi;
Narayan Kamathee69ff42011-06-28 12:07:18 +010022import android.app.SearchManager;
Jeff Sharkey6e2bee72012-10-01 13:39:08 -070023import android.app.WallpaperManager;
Mike LeBeau5d34e9b2010-02-10 19:34:56 -080024import android.content.ComponentName;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080025import android.content.ContentResolver;
26import android.content.ContentValues;
27import android.content.Context;
Brad Fitzpatrick1877d012010-03-04 17:48:13 -080028import android.content.IContentProvider;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080029import android.content.Intent;
Dianne Hackbornb8b11a02010-03-10 15:53:11 -080030import android.content.pm.ActivityInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080031import android.content.pm.PackageManager;
32import android.content.pm.ResolveInfo;
33import android.content.res.Configuration;
34import android.content.res.Resources;
35import android.database.Cursor;
36import android.database.SQLException;
David Christie3f7b6522013-08-06 19:19:08 -070037import android.location.LocationManager;
Jeff Sharkey625239a2012-09-26 22:03:49 -070038import android.net.ConnectivityManager;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080039import android.net.Uri;
Irfan Sheriff36f74132010-11-04 16:57:37 -070040import android.net.wifi.WifiManager;
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -070041import android.os.BatteryManager;
42import android.os.Bundle;
Jeff Sharkey625239a2012-09-26 22:03:49 -070043import android.os.DropBoxManager;
Amith Yamasani52c489c2012-03-28 11:42:42 -070044import android.os.IBinder;
Amith Yamasani7ab8c4a2012-04-06 09:27:12 -070045import android.os.Process;
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -070046import android.os.RemoteException;
Amith Yamasani52c489c2012-03-28 11:42:42 -070047import android.os.ServiceManager;
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -070048import android.os.SystemProperties;
Dianne Hackbornf02b60a2012-08-16 10:48:27 -070049import android.os.UserHandle;
Jeff Sharkey625239a2012-09-26 22:03:49 -070050import android.os.Build.VERSION_CODES;
Narayan Kamath6d632962011-08-24 11:51:37 +010051import android.speech.tts.TextToSpeech;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080052import android.text.TextUtils;
53import android.util.AndroidException;
Svetoslav683914b2015-01-15 14:22:26 -080054import android.util.ArrayMap;
55import android.util.ArraySet;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080056import android.util.Log;
57
Svetoslav683914b2015-01-15 14:22:26 -080058import com.android.internal.util.ArrayUtils;
Amith Yamasani52c489c2012-03-28 11:42:42 -070059import com.android.internal.widget.ILockSettings;
60
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080061import java.net.URISyntaxException;
Svetoslav683914b2015-01-15 14:22:26 -080062import java.text.SimpleDateFormat;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080063import java.util.HashMap;
64import java.util.HashSet;
Elliott Hughescb64d432013-08-02 10:00:44 -070065import java.util.Locale;
Svetoslav683914b2015-01-15 14:22:26 -080066import java.util.Map;
67import java.util.Set;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080068
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080069/**
70 * The Settings provider contains global system-level device preferences.
71 */
72public final class Settings {
73
74 // Intent actions for Settings
75
76 /**
77 * Activity Action: Show system settings.
78 * <p>
79 * Input: Nothing.
80 * <p>
Gilles Debunnee90bed12011-08-30 14:28:27 -070081 * Output: Nothing.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080082 */
83 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
84 public static final String ACTION_SETTINGS = "android.settings.SETTINGS";
85
86 /**
87 * Activity Action: Show settings to allow configuration of APNs.
88 * <p>
89 * Input: Nothing.
90 * <p>
Gilles Debunnee90bed12011-08-30 14:28:27 -070091 * Output: Nothing.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080092 */
93 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
94 public static final String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS";
95
96 /**
97 * Activity Action: Show settings to allow configuration of current location
98 * sources.
99 * <p>
100 * In some cases, a matching Activity may not exist, so ensure you
101 * safeguard against this.
102 * <p>
103 * Input: Nothing.
104 * <p>
105 * Output: Nothing.
106 */
107 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
108 public static final String ACTION_LOCATION_SOURCE_SETTINGS =
109 "android.settings.LOCATION_SOURCE_SETTINGS";
110
111 /**
112 * Activity Action: Show settings to allow configuration of wireless controls
113 * such as Wi-Fi, Bluetooth and Mobile networks.
114 * <p>
115 * In some cases, a matching Activity may not exist, so ensure you
116 * safeguard against this.
117 * <p>
118 * Input: Nothing.
119 * <p>
120 * Output: Nothing.
121 */
122 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
123 public static final String ACTION_WIRELESS_SETTINGS =
124 "android.settings.WIRELESS_SETTINGS";
125
126 /**
127 * Activity Action: Show settings to allow entering/exiting airplane mode.
128 * <p>
129 * In some cases, a matching Activity may not exist, so ensure you
130 * safeguard against this.
131 * <p>
132 * Input: Nothing.
133 * <p>
134 * Output: Nothing.
135 */
136 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
137 public static final String ACTION_AIRPLANE_MODE_SETTINGS =
138 "android.settings.AIRPLANE_MODE_SETTINGS";
139
140 /**
Barnaby James48f35522014-07-16 14:27:39 -0700141 * Activity Action: Modify Airplane mode settings using the users voice.
142 * <p>
143 * In some cases, a matching Activity may not exist, so ensure you safeguard against this.
144 * <p>
145 * This intent MUST be started using
146 * {@link android.service.voice.VoiceInteractionSession#startVoiceActivity
147 * startVoiceActivity}.
148 * <p>
149 * To tell which state airplane mode should be set to, add the
150 * {@link #EXTRA_AIRPLANE_MODE_ENABLED} extra to this Intent with the state specified.
151 * If there is no extra in this Intent, no changes will be made.
152 * <p>
153 * The activity should verify that
154 * {@link android.app.Activity#isVoiceInteraction isVoiceInteraction} returns true before
155 * modifying the setting.
156 * <p>
157 * Input: Nothing.
158 * <p>
159 * Output: Nothing.
160 */
161 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
162 public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE =
163 "android.settings.VOICE_CONTROL_AIRPLANE_MODE";
164
165 /**
Dianne Hackborndd9b82c2009-09-03 00:18:47 -0700166 * Activity Action: Show settings for accessibility modules.
167 * <p>
168 * In some cases, a matching Activity may not exist, so ensure you
169 * safeguard against this.
170 * <p>
171 * Input: Nothing.
172 * <p>
173 * Output: Nothing.
174 */
175 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
176 public static final String ACTION_ACCESSIBILITY_SETTINGS =
177 "android.settings.ACCESSIBILITY_SETTINGS";
178
179 /**
Dianne Hackborna3fb40d2014-08-12 15:06:50 -0700180 * Activity Action: Show settings to control access to usage information.
181 * <p>
182 * In some cases, a matching Activity may not exist, so ensure you
183 * safeguard against this.
184 * <p>
185 * Input: Nothing.
186 * <p>
187 * Output: Nothing.
188 */
189 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
190 public static final String ACTION_USAGE_ACCESS_SETTINGS =
191 "android.settings.USAGE_ACCESS_SETTINGS";
192
193 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800194 * Activity Action: Show settings to allow configuration of security and
195 * location privacy.
196 * <p>
197 * In some cases, a matching Activity may not exist, so ensure you
198 * safeguard against this.
199 * <p>
200 * Input: Nothing.
201 * <p>
202 * Output: Nothing.
203 */
204 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
205 public static final String ACTION_SECURITY_SETTINGS =
206 "android.settings.SECURITY_SETTINGS";
207
208 /**
Maggie Benthall0469f412013-09-05 15:30:26 -0400209 * Activity Action: Show trusted credentials settings, opening to the user tab,
210 * to allow management of installed credentials.
211 * <p>
212 * In some cases, a matching Activity may not exist, so ensure you
213 * safeguard against this.
214 * <p>
215 * Input: Nothing.
216 * <p>
217 * Output: Nothing.
218 * @hide
219 */
220 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
221 public static final String ACTION_TRUSTED_CREDENTIALS_USER =
222 "com.android.settings.TRUSTED_CREDENTIALS_USER";
223
224 /**
225 * Activity Action: Show dialog explaining that an installed CA cert may enable
226 * monitoring of encrypted network traffic.
227 * <p>
228 * In some cases, a matching Activity may not exist, so ensure you
229 * safeguard against this.
230 * <p>
231 * Input: Nothing.
232 * <p>
233 * Output: Nothing.
234 * @hide
235 */
236 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
237 public static final String ACTION_MONITORING_CERT_INFO =
238 "com.android.settings.MONITORING_CERT_INFO";
239
240 /**
Amith Yamasanic15255a2009-09-23 15:33:19 -0700241 * Activity Action: Show settings to allow configuration of privacy options.
242 * <p>
243 * In some cases, a matching Activity may not exist, so ensure you
244 * safeguard against this.
245 * <p>
246 * Input: Nothing.
247 * <p>
248 * Output: Nothing.
249 */
250 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
251 public static final String ACTION_PRIVACY_SETTINGS =
252 "android.settings.PRIVACY_SETTINGS";
253
254 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800255 * Activity Action: Show settings to allow configuration of Wi-Fi.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800256 * <p>
257 * In some cases, a matching Activity may not exist, so ensure you
258 * safeguard against this.
259 * <p>
260 * Input: Nothing.
261 * <p>
262 * Output: Nothing.
263
264 */
265 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
266 public static final String ACTION_WIFI_SETTINGS =
267 "android.settings.WIFI_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700268
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800269 /**
270 * Activity Action: Show settings to allow configuration of a static IP
271 * address for Wi-Fi.
272 * <p>
273 * In some cases, a matching Activity may not exist, so ensure you safeguard
274 * against this.
275 * <p>
276 * Input: Nothing.
277 * <p>
278 * Output: Nothing.
279 */
280 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
281 public static final String ACTION_WIFI_IP_SETTINGS =
282 "android.settings.WIFI_IP_SETTINGS";
283
284 /**
285 * Activity Action: Show settings to allow configuration of Bluetooth.
286 * <p>
287 * In some cases, a matching Activity may not exist, so ensure you
288 * safeguard against this.
289 * <p>
290 * Input: Nothing.
291 * <p>
292 * Output: Nothing.
293 */
294 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
295 public static final String ACTION_BLUETOOTH_SETTINGS =
296 "android.settings.BLUETOOTH_SETTINGS";
297
298 /**
Jeff Brown89d55462012-09-19 11:33:42 -0700299 * Activity Action: Show settings to allow configuration of Wifi Displays.
300 * <p>
301 * In some cases, a matching Activity may not exist, so ensure you
302 * safeguard against this.
303 * <p>
304 * Input: Nothing.
305 * <p>
306 * Output: Nothing.
307 * @hide
308 */
309 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
310 public static final String ACTION_WIFI_DISPLAY_SETTINGS =
311 "android.settings.WIFI_DISPLAY_SETTINGS";
312
313 /**
Jeff Brown1a937b02014-07-01 22:13:04 -0700314 * Activity Action: Show settings to allow configuration of
315 * {@link android.media.routing.MediaRouteService media route providers}.
316 * <p>
317 * In some cases, a matching Activity may not exist, so ensure you
318 * safeguard against this.
319 * <p>
320 * Input: Nothing.
321 * <p>
322 * Output: Nothing.
323 */
324 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
325 public static final String ACTION_CAST_SETTINGS =
326 "android.settings.CAST_SETTINGS";
327
328 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800329 * Activity Action: Show settings to allow configuration of date and time.
330 * <p>
331 * In some cases, a matching Activity may not exist, so ensure you
332 * safeguard against this.
333 * <p>
334 * Input: Nothing.
335 * <p>
336 * Output: Nothing.
337 */
338 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
339 public static final String ACTION_DATE_SETTINGS =
340 "android.settings.DATE_SETTINGS";
341
342 /**
343 * Activity Action: Show settings to allow configuration of sound and volume.
344 * <p>
345 * In some cases, a matching Activity may not exist, so ensure you
346 * safeguard against this.
347 * <p>
348 * Input: Nothing.
349 * <p>
350 * Output: Nothing.
351 */
352 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
353 public static final String ACTION_SOUND_SETTINGS =
354 "android.settings.SOUND_SETTINGS";
355
356 /**
357 * Activity Action: Show settings to allow configuration of display.
358 * <p>
359 * In some cases, a matching Activity may not exist, so ensure you
360 * safeguard against this.
361 * <p>
362 * Input: Nothing.
363 * <p>
364 * Output: Nothing.
365 */
366 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
367 public static final String ACTION_DISPLAY_SETTINGS =
368 "android.settings.DISPLAY_SETTINGS";
369
370 /**
371 * Activity Action: Show settings to allow configuration of locale.
372 * <p>
373 * In some cases, a matching Activity may not exist, so ensure you
374 * safeguard against this.
375 * <p>
376 * Input: Nothing.
377 * <p>
378 * Output: Nothing.
379 */
380 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
381 public static final String ACTION_LOCALE_SETTINGS =
382 "android.settings.LOCALE_SETTINGS";
383
384 /**
385 * Activity Action: Show settings to configure input methods, in particular
386 * allowing the user to enable input methods.
387 * <p>
388 * In some cases, a matching Activity may not exist, so ensure you
389 * safeguard against this.
390 * <p>
391 * Input: Nothing.
392 * <p>
393 * Output: Nothing.
394 */
395 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
Dianne Hackborna3fb40d2014-08-12 15:06:50 -0700396 public static final String ACTION_VOICE_INPUT_SETTINGS =
397 "android.settings.VOICE_INPUT_SETTINGS";
398
399 /**
400 * Activity Action: Show settings to configure input methods, in particular
401 * allowing the user to enable input methods.
402 * <p>
403 * In some cases, a matching Activity may not exist, so ensure you
404 * safeguard against this.
405 * <p>
406 * Input: Nothing.
407 * <p>
408 * Output: Nothing.
409 */
410 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800411 public static final String ACTION_INPUT_METHOD_SETTINGS =
412 "android.settings.INPUT_METHOD_SETTINGS";
413
414 /**
Tadashi G. Takaokaf49688f2011-01-20 17:56:13 +0900415 * Activity Action: Show settings to enable/disable input method subtypes.
satok86417ea2010-10-27 14:11:03 +0900416 * <p>
417 * In some cases, a matching Activity may not exist, so ensure you
418 * safeguard against this.
419 * <p>
Tadashi G. Takaoka25480202011-01-20 23:13:02 +0900420 * To tell which input method's subtypes are displayed in the settings, add
421 * {@link #EXTRA_INPUT_METHOD_ID} extra to this Intent with the input method id.
422 * If there is no extra in this Intent, subtypes from all installed input methods
423 * will be displayed in the settings.
424 *
425 * @see android.view.inputmethod.InputMethodInfo#getId
426 * <p>
satok86417ea2010-10-27 14:11:03 +0900427 * Input: Nothing.
428 * <p>
429 * Output: Nothing.
430 */
431 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
Tadashi G. Takaokaf49688f2011-01-20 17:56:13 +0900432 public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS =
433 "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
satok86417ea2010-10-27 14:11:03 +0900434
435 /**
satok7cfc0ed2011-06-20 21:29:36 +0900436 * Activity Action: Show a dialog to select input method.
437 * <p>
438 * In some cases, a matching Activity may not exist, so ensure you
439 * safeguard against this.
440 * <p>
441 * Input: Nothing.
442 * <p>
443 * Output: Nothing.
444 * @hide
445 */
446 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
447 public static final String ACTION_SHOW_INPUT_METHOD_PICKER =
448 "android.settings.SHOW_INPUT_METHOD_PICKER";
449
450 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800451 * Activity Action: Show settings to manage the user input dictionary.
452 * <p>
Chet Haasee8222dd2013-09-05 07:44:18 -0700453 * Starting with {@link android.os.Build.VERSION_CODES#KITKAT},
Satoshi Kataoka2aa2bc52013-07-30 14:25:11 +0900454 * it is guaranteed there will always be an appropriate implementation for this Intent action.
455 * In prior releases of the platform this was optional, so ensure you safeguard against it.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800456 * <p>
457 * Input: Nothing.
458 * <p>
459 * Output: Nothing.
460 */
461 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
462 public static final String ACTION_USER_DICTIONARY_SETTINGS =
463 "android.settings.USER_DICTIONARY_SETTINGS";
464
465 /**
Gilles Debunnee90bed12011-08-30 14:28:27 -0700466 * Activity Action: Adds a word to the user dictionary.
467 * <p>
468 * In some cases, a matching Activity may not exist, so ensure you
469 * safeguard against this.
470 * <p>
471 * Input: An extra with key <code>word</code> that contains the word
472 * that should be added to the dictionary.
473 * <p>
474 * Output: Nothing.
475 *
476 * @hide
477 */
478 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
479 public static final String ACTION_USER_DICTIONARY_INSERT =
480 "com.android.settings.USER_DICTIONARY_INSERT";
481
482 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800483 * Activity Action: Show settings to allow configuration of application-related settings.
484 * <p>
485 * In some cases, a matching Activity may not exist, so ensure you
486 * safeguard against this.
487 * <p>
488 * Input: Nothing.
489 * <p>
490 * Output: Nothing.
491 */
492 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
493 public static final String ACTION_APPLICATION_SETTINGS =
494 "android.settings.APPLICATION_SETTINGS";
495
496 /**
497 * Activity Action: Show settings to allow configuration of application
Dianne Hackborn8d866e52012-10-10 18:39:45 -0700498 * development-related settings. As of
499 * {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} this action is
500 * a required part of the platform.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800501 * <p>
502 * Input: Nothing.
503 * <p>
504 * Output: Nothing.
505 */
506 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
507 public static final String ACTION_APPLICATION_DEVELOPMENT_SETTINGS =
508 "android.settings.APPLICATION_DEVELOPMENT_SETTINGS";
509
510 /**
511 * Activity Action: Show settings to allow configuration of quick launch shortcuts.
512 * <p>
513 * In some cases, a matching Activity may not exist, so ensure you
514 * safeguard against this.
515 * <p>
516 * Input: Nothing.
517 * <p>
518 * Output: Nothing.
519 */
520 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
521 public static final String ACTION_QUICK_LAUNCH_SETTINGS =
522 "android.settings.QUICK_LAUNCH_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700523
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800524 /**
525 * Activity Action: Show settings to manage installed applications.
526 * <p>
527 * In some cases, a matching Activity may not exist, so ensure you
528 * safeguard against this.
529 * <p>
530 * Input: Nothing.
531 * <p>
532 * Output: Nothing.
533 */
534 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
535 public static final String ACTION_MANAGE_APPLICATIONS_SETTINGS =
536 "android.settings.MANAGE_APPLICATIONS_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700537
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800538 /**
Winson Chung44e8ff92010-09-27 14:36:52 -0700539 * Activity Action: Show settings to manage all applications.
540 * <p>
541 * In some cases, a matching Activity may not exist, so ensure you
542 * safeguard against this.
543 * <p>
544 * Input: Nothing.
545 * <p>
546 * Output: Nothing.
547 */
548 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
549 public static final String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS =
550 "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS";
551
552 /**
Dianne Hackbornb7bb3b32010-06-06 22:47:50 -0700553 * Activity Action: Show screen of details about a particular application.
554 * <p>
555 * In some cases, a matching Activity may not exist, so ensure you
556 * safeguard against this.
557 * <p>
558 * Input: The Intent's data URI specifies the application package name
559 * to be shown, with the "package" scheme. That is "package:com.my.app".
560 * <p>
561 * Output: Nothing.
562 */
563 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
564 public static final String ACTION_APPLICATION_DETAILS_SETTINGS =
565 "android.settings.APPLICATION_DETAILS_SETTINGS";
566
567 /**
Dianne Hackborn35654b62013-01-14 17:38:02 -0800568 * @hide
569 * Activity Action: Show the "app ops" settings screen.
570 * <p>
571 * Input: Nothing.
572 * <p>
573 * Output: Nothing.
574 */
575 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
576 public static final String ACTION_APP_OPS_SETTINGS =
577 "android.settings.APP_OPS_SETTINGS";
578
579 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800580 * Activity Action: Show settings for system update functionality.
581 * <p>
582 * In some cases, a matching Activity may not exist, so ensure you
583 * safeguard against this.
584 * <p>
585 * Input: Nothing.
586 * <p>
587 * Output: Nothing.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700588 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800589 * @hide
590 */
591 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
592 public static final String ACTION_SYSTEM_UPDATE_SETTINGS =
593 "android.settings.SYSTEM_UPDATE_SETTINGS";
594
595 /**
596 * Activity Action: Show settings to allow configuration of sync settings.
597 * <p>
598 * In some cases, a matching Activity may not exist, so ensure you
599 * safeguard against this.
600 * <p>
Erikeebc8e22010-02-18 13:27:19 -0800601 * The account types available to add via the add account button may be restricted by adding an
602 * {@link #EXTRA_AUTHORITIES} extra to this Intent with one or more syncable content provider's
603 * authorities. Only account types which can sync with that content provider will be offered to
604 * the user.
605 * <p>
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800606 * Input: Nothing.
607 * <p>
608 * Output: Nothing.
609 */
610 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
611 public static final String ACTION_SYNC_SETTINGS =
612 "android.settings.SYNC_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700613
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800614 /**
Erikeebc8e22010-02-18 13:27:19 -0800615 * Activity Action: Show add account screen for creating a new account.
616 * <p>
617 * In some cases, a matching Activity may not exist, so ensure you
618 * safeguard against this.
619 * <p>
620 * The account types available to add may be restricted by adding an {@link #EXTRA_AUTHORITIES}
621 * extra to the Intent with one or more syncable content provider's authorities. Only account
622 * types which can sync with that content provider will be offered to the user.
623 * <p>
Alon Albert50359c22013-02-26 14:47:48 -0800624 * Account types can also be filtered by adding an {@link #EXTRA_ACCOUNT_TYPES} extra to the
625 * Intent with one or more account types.
626 * <p>
Erikeebc8e22010-02-18 13:27:19 -0800627 * Input: Nothing.
628 * <p>
629 * Output: Nothing.
630 */
631 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
632 public static final String ACTION_ADD_ACCOUNT =
633 "android.settings.ADD_ACCOUNT_SETTINGS";
634
635 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800636 * Activity Action: Show settings for selecting the network operator.
637 * <p>
638 * In some cases, a matching Activity may not exist, so ensure you
639 * safeguard against this.
640 * <p>
641 * Input: Nothing.
642 * <p>
643 * Output: Nothing.
644 */
645 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
646 public static final String ACTION_NETWORK_OPERATOR_SETTINGS =
647 "android.settings.NETWORK_OPERATOR_SETTINGS";
648
649 /**
650 * Activity Action: Show settings for selection of 2G/3G.
651 * <p>
652 * In some cases, a matching Activity may not exist, so ensure you
653 * safeguard against this.
654 * <p>
655 * Input: Nothing.
656 * <p>
657 * Output: Nothing.
658 */
659 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
660 public static final String ACTION_DATA_ROAMING_SETTINGS =
661 "android.settings.DATA_ROAMING_SETTINGS";
662
663 /**
664 * Activity Action: Show settings for internal storage.
665 * <p>
666 * In some cases, a matching Activity may not exist, so ensure you
667 * safeguard against this.
668 * <p>
669 * Input: Nothing.
670 * <p>
671 * Output: Nothing.
672 */
673 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
674 public static final String ACTION_INTERNAL_STORAGE_SETTINGS =
675 "android.settings.INTERNAL_STORAGE_SETTINGS";
676 /**
677 * Activity Action: Show settings for memory card storage.
678 * <p>
679 * In some cases, a matching Activity may not exist, so ensure you
680 * safeguard against this.
681 * <p>
682 * Input: Nothing.
683 * <p>
684 * Output: Nothing.
685 */
686 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
687 public static final String ACTION_MEMORY_CARD_SETTINGS =
688 "android.settings.MEMORY_CARD_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700689
Justin Mattsonef340352010-01-13 21:05:46 -0800690 /**
691 * Activity Action: Show settings for global search.
692 * <p>
693 * In some cases, a matching Activity may not exist, so ensure you
694 * safeguard against this.
695 * <p>
696 * Input: Nothing.
697 * <p>
698 * Output: Nothing
699 */
700 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
701 public static final String ACTION_SEARCH_SETTINGS =
702 "android.search.action.SEARCH_SETTINGS";
703
Daniel Sandler9d8b8762010-01-22 20:50:15 -0500704 /**
705 * Activity Action: Show general device information settings (serial
706 * number, software version, phone number, etc.).
707 * <p>
708 * In some cases, a matching Activity may not exist, so ensure you
709 * safeguard against this.
710 * <p>
711 * Input: Nothing.
712 * <p>
713 * Output: Nothing
714 */
715 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
716 public static final String ACTION_DEVICE_INFO_SETTINGS =
717 "android.settings.DEVICE_INFO_SETTINGS";
718
Martijn Coenen9b3c83f2011-07-28 11:21:39 -0500719 /**
Nick Pellycccf01d2011-10-31 14:49:40 -0700720 * Activity Action: Show NFC settings.
721 * <p>
722 * This shows UI that allows NFC to be turned on or off.
Martijn Coenen9b3c83f2011-07-28 11:21:39 -0500723 * <p>
724 * In some cases, a matching Activity may not exist, so ensure you
725 * safeguard against this.
726 * <p>
727 * Input: Nothing.
728 * <p>
729 * Output: Nothing
Nick Pellycccf01d2011-10-31 14:49:40 -0700730 * @see android.nfc.NfcAdapter#isEnabled()
731 */
732 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
733 public static final String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS";
734
735 /**
736 * Activity Action: Show NFC Sharing settings.
737 * <p>
738 * This shows UI that allows NDEF Push (Android Beam) to be turned on or
739 * off.
740 * <p>
741 * In some cases, a matching Activity may not exist, so ensure you
742 * safeguard against this.
743 * <p>
744 * Input: Nothing.
745 * <p>
746 * Output: Nothing
747 * @see android.nfc.NfcAdapter#isNdefPushEnabled()
Martijn Coenen9b3c83f2011-07-28 11:21:39 -0500748 */
749 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
750 public static final String ACTION_NFCSHARING_SETTINGS =
751 "android.settings.NFCSHARING_SETTINGS";
752
Daniel Sandlerc08cd022012-11-27 22:47:37 -0500753 /**
Martijn Coenen62c196a2013-08-09 13:43:34 -0700754 * Activity Action: Show NFC Tap & Pay settings
755 * <p>
756 * This shows UI that allows the user to configure Tap&Pay
757 * settings.
758 * <p>
759 * In some cases, a matching Activity may not exist, so ensure you
760 * safeguard against this.
761 * <p>
762 * Input: Nothing.
763 * <p>
764 * Output: Nothing
765 */
766 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
767 public static final String ACTION_NFC_PAYMENT_SETTINGS =
768 "android.settings.NFC_PAYMENT_SETTINGS";
769
770 /**
Daniel Sandlerc08cd022012-11-27 22:47:37 -0500771 * Activity Action: Show Daydream settings.
772 * <p>
773 * In some cases, a matching Activity may not exist, so ensure you
774 * safeguard against this.
775 * <p>
776 * Input: Nothing.
777 * <p>
778 * Output: Nothing.
779 * @see android.service.dreams.DreamService
Daniel Sandlerc08cd022012-11-27 22:47:37 -0500780 */
781 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
782 public static final String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS";
783
Daniel Sandler5feceeb2013-03-22 18:29:23 -0700784 /**
785 * Activity Action: Show Notification listener settings.
786 * <p>
787 * In some cases, a matching Activity may not exist, so ensure you
788 * safeguard against this.
789 * <p>
790 * Input: Nothing.
791 * <p>
792 * Output: Nothing.
793 * @see android.service.notification.NotificationListenerService
Daniel Sandler5feceeb2013-03-22 18:29:23 -0700794 */
795 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
796 public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS
Chris Wren8326a8a2014-10-22 14:13:32 -0400797 = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";
Daniel Sandler5feceeb2013-03-22 18:29:23 -0700798
Alan Viverette69ce69b2013-08-29 12:23:48 -0700799 /**
John Spurlock7340fc82014-04-24 18:50:12 -0400800 * @hide
801 */
802 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
803 public static final String ACTION_CONDITION_PROVIDER_SETTINGS
804 = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS";
805
806 /**
Alan Viverette69ce69b2013-08-29 12:23:48 -0700807 * Activity Action: Show settings for video captioning.
808 * <p>
809 * In some cases, a matching Activity may not exist, so ensure you safeguard
810 * against this.
811 * <p>
812 * Input: Nothing.
813 * <p>
814 * Output: Nothing.
815 */
816 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
817 public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
818
Svetoslav773f54d2013-09-03 14:01:43 -0700819 /**
820 * Activity Action: Show the top level print settings.
821 * <p>
822 * In some cases, a matching Activity may not exist, so ensure you
823 * safeguard against this.
824 * <p>
825 * Input: Nothing.
826 * <p>
827 * Output: Nothing.
828 */
829 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
830 public static final String ACTION_PRINT_SETTINGS =
831 "android.settings.ACTION_PRINT_SETTINGS";
832
John Spurlockde547002014-02-28 17:50:39 -0500833 /**
834 * Activity Action: Show Zen Mode configuration settings.
835 *
836 * @hide
837 */
838 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
839 public static final String ACTION_ZEN_MODE_SETTINGS = "android.settings.ZEN_MODE_SETTINGS";
840
Santos Cordona4c75242014-07-09 12:07:51 -0700841 /**
842 * Activity Action: Show the regulatory information screen for the device.
843 * <p>
844 * In some cases, a matching Activity may not exist, so ensure you safeguard
845 * against this.
846 * <p>
847 * Input: Nothing.
848 * <p>
849 * Output: Nothing.
850 */
Jeff Sharkeydd77fda2014-04-16 17:23:08 -0700851 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
852 public static final String
853 ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
854
Jerome Poichet7974cb32014-05-14 12:04:43 -0700855 /**
856 * Activity Action: Show Device Name Settings.
857 * <p>
858 * In some cases, a matching Activity may not exist, so ensure you safeguard
Tim Kilbourn87cd0dc2014-04-14 15:37:51 -0700859 * against this.
Jerome Poichet7974cb32014-05-14 12:04:43 -0700860 *
861 * @hide
862 */
863 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
864 public static final String DEVICE_NAME_SETTINGS = "android.settings.DEVICE_NAME";
865
Tim Kilbourn87cd0dc2014-04-14 15:37:51 -0700866 /**
867 * Activity Action: Show pairing settings.
868 * <p>
869 * In some cases, a matching Activity may not exist, so ensure you safeguard
870 * against this.
871 *
872 * @hide
873 */
874 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
875 public static final String ACTION_PAIRING_SETTINGS = "android.settings.PAIRING_SETTINGS";
876
John Spurlockf8f524c2014-06-10 14:47:29 -0400877 /**
878 * Activity Action: Show battery saver settings.
John Spurlock73466662014-10-30 13:42:05 -0400879 * <p>
880 * In some cases, a matching Activity may not exist, so ensure you safeguard
881 * against this.
John Spurlockf8f524c2014-06-10 14:47:29 -0400882 */
883 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
884 public static final String ACTION_BATTERY_SAVER_SETTINGS
885 = "android.settings.BATTERY_SAVER_SETTINGS";
886
Amith Yamasanieb7b94a2014-07-14 18:02:08 -0700887 /**
888 * Activity Action: Show Home selection settings. If there are multiple activities
889 * that can satisfy the {@link Intent#CATEGORY_HOME} intent, this screen allows you
890 * to pick your preferred activity.
891 */
892 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
893 public static final String ACTION_HOME_SETTINGS
894 = "android.settings.HOME_SETTINGS";
895
John Spurlock2b0e09c2014-07-27 13:27:47 -0400896 /**
897 * Activity Action: Show notification settings.
898 *
899 * @hide
900 */
901 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
902 public static final String ACTION_NOTIFICATION_SETTINGS
903 = "android.settings.NOTIFICATION_SETTINGS";
904
905 /**
906 * Activity Action: Show notification settings for a single app.
907 *
908 * @hide
909 */
910 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
911 public static final String ACTION_APP_NOTIFICATION_SETTINGS
912 = "android.settings.APP_NOTIFICATION_SETTINGS";
913
Chris Wrencd8f4f72014-08-27 18:48:13 -0400914 /**
915 * Activity Action: Show notification redaction settings.
916 *
917 * @hide
918 */
919 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
920 public static final String ACTION_APP_NOTIFICATION_REDACTION
921 = "android.settings.ACTION_APP_NOTIFICATION_REDACTION";
922
John Spurlock2b0e09c2014-07-27 13:27:47 -0400923 /** @hide */ public static final String EXTRA_APP_UID = "app_uid";
924 /** @hide */ public static final String EXTRA_APP_PACKAGE = "app_package";
925
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800926 // End of Intent actions for Settings
927
Erikeebc8e22010-02-18 13:27:19 -0800928 /**
Brad Fitzpatrick1877d012010-03-04 17:48:13 -0800929 * @hide - Private call() method on SettingsProvider to read from 'system' table.
930 */
931 public static final String CALL_METHOD_GET_SYSTEM = "GET_system";
932
933 /**
934 * @hide - Private call() method on SettingsProvider to read from 'secure' table.
935 */
936 public static final String CALL_METHOD_GET_SECURE = "GET_secure";
937
938 /**
Christopher Tate06efb532012-08-24 15:29:27 -0700939 * @hide - Private call() method on SettingsProvider to read from 'global' table.
940 */
941 public static final String CALL_METHOD_GET_GLOBAL = "GET_global";
942
943 /**
944 * @hide - User handle argument extra to the fast-path call()-based requests
945 */
946 public static final String CALL_METHOD_USER_KEY = "_user";
947
948 /** @hide - Private call() method to write to 'system' table */
949 public static final String CALL_METHOD_PUT_SYSTEM = "PUT_system";
950
951 /** @hide - Private call() method to write to 'secure' table */
952 public static final String CALL_METHOD_PUT_SECURE = "PUT_secure";
953
954 /** @hide - Private call() method to write to 'global' table */
955 public static final String CALL_METHOD_PUT_GLOBAL= "PUT_global";
956
957 /**
Erikeebc8e22010-02-18 13:27:19 -0800958 * Activity Extra: Limit available options in launched activity based on the given authority.
959 * <p>
960 * This can be passed as an extra field in an Activity Intent with one or more syncable content
961 * provider's authorities as a String[]. This field is used by some intents to alter the
962 * behavior of the called activity.
963 * <p>
964 * Example: The {@link #ACTION_ADD_ACCOUNT} intent restricts the account types available based
965 * on the authority given.
966 */
Alon Albert50359c22013-02-26 14:47:48 -0800967 public static final String EXTRA_AUTHORITIES = "authorities";
968
Alon Albertd35bf1f2013-04-18 14:26:51 -0700969 /**
970 * Activity Extra: Limit available options in launched activity based on the given account
971 * types.
972 * <p>
973 * This can be passed as an extra field in an Activity Intent with one or more account types
974 * as a String[]. This field is used by some intents to alter the behavior of the called
975 * activity.
976 * <p>
977 * Example: The {@link #ACTION_ADD_ACCOUNT} intent restricts the account types to the specified
978 * list.
979 */
Alon Albert50359c22013-02-26 14:47:48 -0800980 public static final String EXTRA_ACCOUNT_TYPES = "account_types";
Erikeebc8e22010-02-18 13:27:19 -0800981
Tadashi G. Takaoka25480202011-01-20 23:13:02 +0900982 public static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
983
Barnaby James48f35522014-07-16 14:27:39 -0700984 /**
Michael Wrightc93fbd12014-09-22 20:07:59 -0700985 * Activity Extra: The device identifier to act upon.
986 * <p>
987 * This can be passed as an extra field in an Activity Intent with a single
988 * InputDeviceIdentifier. This field is used by some activities to jump straight into the
989 * settings for the given device.
990 * <p>
Dianne Hackbornad6a99b2014-11-18 10:11:10 -0800991 * Example: The {@link #ACTION_INPUT_METHOD_SETTINGS} intent opens the keyboard layout
992 * dialog for the given device.
Michael Wrightc93fbd12014-09-22 20:07:59 -0700993 * @hide
994 */
995 public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier";
996
997 /**
Barnaby James48f35522014-07-16 14:27:39 -0700998 * Activity Extra: Enable or disable Airplane Mode.
999 * <p>
1000 * This can be passed as an extra field to the {@link #ACTION_VOICE_CONTROL_AIRPLANE_MODE}
1001 * intent as a boolean.
1002 */
1003 public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
1004
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001005 private static final String JID_RESOURCE_PREFIX = "android";
1006
1007 public static final String AUTHORITY = "settings";
1008
1009 private static final String TAG = "Settings";
Christopher Tate06efb532012-08-24 15:29:27 -07001010 private static final boolean LOCAL_LOGV = false;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001011
David Christie3f7b6522013-08-06 19:19:08 -07001012 // Lock ensures that when enabling/disabling the master location switch, we don't end up
1013 // with a partial enable/disable state in multi-threaded situations.
1014 private static final Object mLocationSettingsLock = new Object();
1015
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001016 public static class SettingNotFoundException extends AndroidException {
1017 public SettingNotFoundException(String msg) {
1018 super(msg);
1019 }
1020 }
1021
1022 /**
1023 * Common base for tables of name/value settings.
1024 */
1025 public static class NameValueTable implements BaseColumns {
1026 public static final String NAME = "name";
1027 public static final String VALUE = "value";
1028
1029 protected static boolean putString(ContentResolver resolver, Uri uri,
1030 String name, String value) {
1031 // The database will take care of replacing duplicates.
1032 try {
1033 ContentValues values = new ContentValues();
1034 values.put(NAME, name);
1035 values.put(VALUE, value);
1036 resolver.insert(uri, values);
1037 return true;
1038 } catch (SQLException e) {
Dianne Hackborna33e3f72009-09-29 17:28:24 -07001039 Log.w(TAG, "Can't set key " + name + " in " + uri, e);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001040 return false;
1041 }
1042 }
1043
1044 public static Uri getUriFor(Uri uri, String name) {
1045 return Uri.withAppendedPath(uri, name);
1046 }
1047 }
1048
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001049 // Thread-safe.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001050 private static class NameValueCache {
1051 private final String mVersionSystemProperty;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001052 private final Uri mUri;
1053
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001054 private static final String[] SELECT_VALUE =
1055 new String[] { Settings.NameValueTable.VALUE };
1056 private static final String NAME_EQ_PLACEHOLDER = "name=?";
1057
1058 // Must synchronize on 'this' to access mValues and mValuesVersion.
Dan Egnor799f7212009-11-24 16:24:44 -08001059 private final HashMap<String, String> mValues = new HashMap<String, String>();
1060 private long mValuesVersion = 0;
1061
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001062 // Initially null; set lazily and held forever. Synchronized on 'this'.
1063 private IContentProvider mContentProvider = null;
1064
1065 // The method we'll call (or null, to not use) on the provider
1066 // for the fast path of retrieving settings.
Christopher Tate06efb532012-08-24 15:29:27 -07001067 private final String mCallGetCommand;
1068 private final String mCallSetCommand;
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001069
Christopher Tate06efb532012-08-24 15:29:27 -07001070 public NameValueCache(String versionSystemProperty, Uri uri,
1071 String getCommand, String setCommand) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001072 mVersionSystemProperty = versionSystemProperty;
1073 mUri = uri;
Christopher Tate06efb532012-08-24 15:29:27 -07001074 mCallGetCommand = getCommand;
1075 mCallSetCommand = setCommand;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001076 }
1077
Christopher Tate06efb532012-08-24 15:29:27 -07001078 private IContentProvider lazyGetProvider(ContentResolver cr) {
1079 IContentProvider cp = null;
1080 synchronized (this) {
1081 cp = mContentProvider;
1082 if (cp == null) {
1083 cp = mContentProvider = cr.acquireProvider(mUri.getAuthority());
1084 }
1085 }
1086 return cp;
1087 }
1088
1089 public boolean putStringForUser(ContentResolver cr, String name, String value,
1090 final int userHandle) {
1091 try {
1092 Bundle arg = new Bundle();
1093 arg.putString(Settings.NameValueTable.VALUE, value);
Christopher Tated5fe1472012-09-10 15:48:38 -07001094 arg.putInt(CALL_METHOD_USER_KEY, userHandle);
Christopher Tate06efb532012-08-24 15:29:27 -07001095 IContentProvider cp = lazyGetProvider(cr);
Dianne Hackborn35654b62013-01-14 17:38:02 -08001096 cp.call(cr.getPackageName(), mCallSetCommand, name, arg);
Christopher Tate06efb532012-08-24 15:29:27 -07001097 } catch (RemoteException e) {
1098 Log.w(TAG, "Can't set key " + name + " in " + mUri, e);
1099 return false;
1100 }
1101 return true;
1102 }
1103
Christopher Tate06efb532012-08-24 15:29:27 -07001104 public String getStringForUser(ContentResolver cr, String name, final int userHandle) {
Christopher Tate78d2a662012-09-13 16:19:44 -07001105 final boolean isSelf = (userHandle == UserHandle.myUserId());
1106 if (isSelf) {
1107 long newValuesVersion = SystemProperties.getLong(mVersionSystemProperty, 0);
Dan Egnor799f7212009-11-24 16:24:44 -08001108
Christopher Tate78d2a662012-09-13 16:19:44 -07001109 // Our own user's settings data uses a client-side cache
1110 synchronized (this) {
1111 if (mValuesVersion != newValuesVersion) {
1112 if (LOCAL_LOGV || false) {
1113 Log.v(TAG, "invalidate [" + mUri.getLastPathSegment() + "]: current "
1114 + newValuesVersion + " != cached " + mValuesVersion);
1115 }
1116
1117 mValues.clear();
1118 mValuesVersion = newValuesVersion;
Dan Egnor799f7212009-11-24 16:24:44 -08001119 }
1120
Christopher Tate78d2a662012-09-13 16:19:44 -07001121 if (mValues.containsKey(name)) {
1122 return mValues.get(name); // Could be null, that's OK -- negative caching
1123 }
Dan Egnor799f7212009-11-24 16:24:44 -08001124 }
Christopher Tate78d2a662012-09-13 16:19:44 -07001125 } else {
1126 if (LOCAL_LOGV) Log.v(TAG, "get setting for user " + userHandle
1127 + " by user " + UserHandle.myUserId() + " so skipping cache");
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001128 }
Dan Egnor799f7212009-11-24 16:24:44 -08001129
Christopher Tate06efb532012-08-24 15:29:27 -07001130 IContentProvider cp = lazyGetProvider(cr);
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001131
1132 // Try the fast path first, not using query(). If this
1133 // fails (alternate Settings provider that doesn't support
1134 // this interface?) then we fall back to the query/table
1135 // interface.
Christopher Tate06efb532012-08-24 15:29:27 -07001136 if (mCallGetCommand != null) {
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001137 try {
Christopher Tate06efb532012-08-24 15:29:27 -07001138 Bundle args = null;
Christopher Tate5e08af02012-09-21 17:17:22 -07001139 if (!isSelf) {
Christopher Tate06efb532012-08-24 15:29:27 -07001140 args = new Bundle();
1141 args.putInt(CALL_METHOD_USER_KEY, userHandle);
1142 }
Dianne Hackborn35654b62013-01-14 17:38:02 -08001143 Bundle b = cp.call(cr.getPackageName(), mCallGetCommand, name, args);
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001144 if (b != null) {
1145 String value = b.getPairValue();
Christopher Tate78d2a662012-09-13 16:19:44 -07001146 // Don't update our cache for reads of other users' data
1147 if (isSelf) {
1148 synchronized (this) {
1149 mValues.put(name, value);
1150 }
1151 } else {
1152 if (LOCAL_LOGV) Log.i(TAG, "call-query of user " + userHandle
1153 + " by " + UserHandle.myUserId()
1154 + " so not updating cache");
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001155 }
1156 return value;
1157 }
1158 // If the response Bundle is null, we fall through
1159 // to the query interface below.
1160 } catch (RemoteException e) {
1161 // Not supported by the remote side? Fall through
1162 // to query().
1163 }
1164 }
1165
Dan Egnor799f7212009-11-24 16:24:44 -08001166 Cursor c = null;
1167 try {
Dianne Hackborn35654b62013-01-14 17:38:02 -08001168 c = cp.query(cr.getPackageName(), mUri, SELECT_VALUE, NAME_EQ_PLACEHOLDER,
Jeff Brown75ea64f2012-01-25 19:37:13 -08001169 new String[]{name}, null, null);
Dan Egnor799f7212009-11-24 16:24:44 -08001170 if (c == null) {
1171 Log.w(TAG, "Can't get key " + name + " from " + mUri);
1172 return null;
1173 }
1174
1175 String value = c.moveToNext() ? c.getString(0) : null;
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001176 synchronized (this) {
Dan Egnor799f7212009-11-24 16:24:44 -08001177 mValues.put(name, value);
1178 }
1179 if (LOCAL_LOGV) {
1180 Log.v(TAG, "cache miss [" + mUri.getLastPathSegment() + "]: " +
1181 name + " = " + (value == null ? "(null)" : value));
1182 }
1183 return value;
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001184 } catch (RemoteException e) {
Dan Egnor799f7212009-11-24 16:24:44 -08001185 Log.w(TAG, "Can't get key " + name + " from " + mUri, e);
1186 return null; // Return null, but don't cache it.
1187 } finally {
1188 if (c != null) c.close();
1189 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001190 }
1191 }
1192
1193 /**
1194 * System settings, containing miscellaneous system preferences. This
1195 * table holds simple name/value pairs. There are convenience
1196 * functions for accessing individual settings entries.
1197 */
1198 public static final class System extends NameValueTable {
1199 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_system_version";
1200
Svetoslav683914b2015-01-15 14:22:26 -08001201 /** @hide */
1202 public static interface Validator {
1203 public boolean validate(String value);
1204 }
1205
Dianne Hackborn139748f2012-09-24 11:36:57 -07001206 /**
1207 * The content:// style URL for this table
1208 */
1209 public static final Uri CONTENT_URI =
1210 Uri.parse("content://" + AUTHORITY + "/system");
1211
1212 private static final NameValueCache sNameValueCache = new NameValueCache(
1213 SYS_PROP_SETTING_VERSION,
1214 CONTENT_URI,
1215 CALL_METHOD_GET_SYSTEM,
1216 CALL_METHOD_PUT_SYSTEM);
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07001217
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001218 private static final HashSet<String> MOVED_TO_SECURE;
1219 static {
1220 MOVED_TO_SECURE = new HashSet<String>(30);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001221 MOVED_TO_SECURE.add(Secure.ANDROID_ID);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001222 MOVED_TO_SECURE.add(Secure.HTTP_PROXY);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001223 MOVED_TO_SECURE.add(Secure.LOCATION_PROVIDERS_ALLOWED);
Danielle Millett925a7d82012-03-19 18:02:20 -04001224 MOVED_TO_SECURE.add(Secure.LOCK_BIOMETRIC_WEAK_FLAGS);
Amith Yamasani156c4352010-03-05 17:10:03 -08001225 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_ENABLED);
1226 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_VISIBLE);
1227 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001228 MOVED_TO_SECURE.add(Secure.LOGGING_ID);
1229 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_ENABLED);
1230 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_LAST_UPDATE);
1231 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_REDIRECT_URL);
1232 MOVED_TO_SECURE.add(Secure.SETTINGS_CLASSNAME);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001233 MOVED_TO_SECURE.add(Secure.USE_GOOGLE_MAIL);
1234 MOVED_TO_SECURE.add(Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
1235 MOVED_TO_SECURE.add(Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY);
1236 MOVED_TO_SECURE.add(Secure.WIFI_NUM_OPEN_NETWORKS_KEPT);
1237 MOVED_TO_SECURE.add(Secure.WIFI_ON);
1238 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE);
1239 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_AP_COUNT);
1240 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS);
1241 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED);
1242 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS);
1243 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT);
1244 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_MAX_AP_CHECKS);
1245 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_ON);
1246 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_COUNT);
1247 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_DELAY_MS);
1248 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS);
Christopher Tateaa036a22014-05-19 16:33:27 -07001249
1250 // At one time in System, then Global, but now back in Secure
1251 MOVED_TO_SECURE.add(Secure.INSTALL_NON_MARKET_APPS);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001252 }
1253
Christopher Tate06efb532012-08-24 15:29:27 -07001254 private static final HashSet<String> MOVED_TO_GLOBAL;
Christopher Tate66488d62012-10-02 11:58:01 -07001255 private static final HashSet<String> MOVED_TO_SECURE_THEN_GLOBAL;
Christopher Tate06efb532012-08-24 15:29:27 -07001256 static {
1257 MOVED_TO_GLOBAL = new HashSet<String>();
Christopher Tate66488d62012-10-02 11:58:01 -07001258 MOVED_TO_SECURE_THEN_GLOBAL = new HashSet<String>();
1259
Christopher Tate92198742012-09-07 12:00:13 -07001260 // these were originally in system but migrated to secure in the past,
1261 // so are duplicated in the Secure.* namespace
Christopher Tate66488d62012-10-02 11:58:01 -07001262 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.ADB_ENABLED);
1263 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.BLUETOOTH_ON);
1264 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DATA_ROAMING);
1265 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DEVICE_PROVISIONED);
Christopher Tate66488d62012-10-02 11:58:01 -07001266 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.USB_MASS_STORAGE_ENABLED);
1267 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.HTTP_PROXY);
Christopher Tate06efb532012-08-24 15:29:27 -07001268
Christopher Tate92198742012-09-07 12:00:13 -07001269 // these are moving directly from system to global
Christopher Tate06efb532012-08-24 15:29:27 -07001270 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_ON);
1271 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_RADIOS);
1272 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
1273 MOVED_TO_GLOBAL.add(Settings.Global.AUTO_TIME);
1274 MOVED_TO_GLOBAL.add(Settings.Global.AUTO_TIME_ZONE);
1275 MOVED_TO_GLOBAL.add(Settings.Global.CAR_DOCK_SOUND);
1276 MOVED_TO_GLOBAL.add(Settings.Global.CAR_UNDOCK_SOUND);
1277 MOVED_TO_GLOBAL.add(Settings.Global.DESK_DOCK_SOUND);
1278 MOVED_TO_GLOBAL.add(Settings.Global.DESK_UNDOCK_SOUND);
1279 MOVED_TO_GLOBAL.add(Settings.Global.DOCK_SOUNDS_ENABLED);
1280 MOVED_TO_GLOBAL.add(Settings.Global.LOCK_SOUND);
1281 MOVED_TO_GLOBAL.add(Settings.Global.UNLOCK_SOUND);
1282 MOVED_TO_GLOBAL.add(Settings.Global.LOW_BATTERY_SOUND);
1283 MOVED_TO_GLOBAL.add(Settings.Global.POWER_SOUNDS_ENABLED);
1284 MOVED_TO_GLOBAL.add(Settings.Global.STAY_ON_WHILE_PLUGGED_IN);
1285 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SLEEP_POLICY);
Eric Laurentbc0fab1f2012-09-19 11:24:41 -07001286 MOVED_TO_GLOBAL.add(Settings.Global.MODE_RINGER);
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07001287 MOVED_TO_GLOBAL.add(Settings.Global.WINDOW_ANIMATION_SCALE);
1288 MOVED_TO_GLOBAL.add(Settings.Global.TRANSITION_ANIMATION_SCALE);
1289 MOVED_TO_GLOBAL.add(Settings.Global.ANIMATOR_DURATION_SCALE);
1290 MOVED_TO_GLOBAL.add(Settings.Global.FANCY_IME_ANIMATIONS);
1291 MOVED_TO_GLOBAL.add(Settings.Global.COMPATIBILITY_MODE);
1292 MOVED_TO_GLOBAL.add(Settings.Global.EMERGENCY_TONE);
1293 MOVED_TO_GLOBAL.add(Settings.Global.CALL_AUTO_RETRY);
1294 MOVED_TO_GLOBAL.add(Settings.Global.DEBUG_APP);
1295 MOVED_TO_GLOBAL.add(Settings.Global.WAIT_FOR_DEBUGGER);
1296 MOVED_TO_GLOBAL.add(Settings.Global.SHOW_PROCESSES);
1297 MOVED_TO_GLOBAL.add(Settings.Global.ALWAYS_FINISH_ACTIVITIES);
Geremy Condraa0735112013-03-26 21:49:26 -07001298 MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_CONTENT_URL);
1299 MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_METADATA_URL);
1300 MOVED_TO_GLOBAL.add(Settings.Global.SELINUX_UPDATE_CONTENT_URL);
1301 MOVED_TO_GLOBAL.add(Settings.Global.SELINUX_UPDATE_METADATA_URL);
1302 MOVED_TO_GLOBAL.add(Settings.Global.SMS_SHORT_CODES_UPDATE_CONTENT_URL);
1303 MOVED_TO_GLOBAL.add(Settings.Global.SMS_SHORT_CODES_UPDATE_METADATA_URL);
1304 MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_CONTENT_URL);
1305 MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_METADATA_URL);
Christopher Tate06efb532012-08-24 15:29:27 -07001306 }
1307
Svetoslav683914b2015-01-15 14:22:26 -08001308 private static final Validator sBooleanValidator =
1309 new DiscreteValueValidator(new String[] {"0", "1"});
1310
1311 private static final Validator sNonNegativeIntegerValidator = new Validator() {
1312 @Override
1313 public boolean validate(String value) {
1314 try {
1315 return Integer.parseInt(value) >= 0;
1316 } catch (NumberFormatException e) {
1317 return false;
1318 }
1319 }
1320 };
1321
Svetoslav683914b2015-01-15 14:22:26 -08001322 private static final Validator sUriValidator = new Validator() {
1323 @Override
1324 public boolean validate(String value) {
1325 try {
1326 Uri.decode(value);
1327 return true;
1328 } catch (IllegalArgumentException e) {
1329 return false;
1330 }
1331 }
1332 };
1333
1334 private static final Validator sLenientIpAddressValidator = new Validator() {
1335 private static final int MAX_IPV6_LENGTH = 45;
1336
1337 @Override
1338 public boolean validate(String value) {
1339 return value.length() <= MAX_IPV6_LENGTH;
1340 }
1341 };
1342
Christopher Tate66488d62012-10-02 11:58:01 -07001343 /** @hide */
Svetoslav683914b2015-01-15 14:22:26 -08001344 public static void getMovedToGlobalSettings(Set<String> outKeySet) {
Christopher Tate66488d62012-10-02 11:58:01 -07001345 outKeySet.addAll(MOVED_TO_GLOBAL);
1346 outKeySet.addAll(MOVED_TO_SECURE_THEN_GLOBAL);
1347 }
1348
1349 /** @hide */
Svetoslav683914b2015-01-15 14:22:26 -08001350 public static void getMovedToSecureSettings(Set<String> outKeySet) {
1351 outKeySet.addAll(MOVED_TO_SECURE);
1352 }
1353
1354 /** @hide */
Christopher Tate66488d62012-10-02 11:58:01 -07001355 public static void getNonLegacyMovedKeys(HashSet<String> outKeySet) {
1356 outKeySet.addAll(MOVED_TO_GLOBAL);
1357 }
1358
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001359 /**
1360 * Look up a name in the database.
1361 * @param resolver to access the database with
1362 * @param name to look up in the table
1363 * @return the corresponding value, or null if not present
1364 */
Dianne Hackborn139748f2012-09-24 11:36:57 -07001365 public static String getString(ContentResolver resolver, String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07001366 return getStringForUser(resolver, name, UserHandle.myUserId());
1367 }
1368
1369 /** @hide */
Dianne Hackborn139748f2012-09-24 11:36:57 -07001370 public static String getStringForUser(ContentResolver resolver, String name,
Christopher Tate06efb532012-08-24 15:29:27 -07001371 int userHandle) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001372 if (MOVED_TO_SECURE.contains(name)) {
1373 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1374 + " to android.provider.Settings.Secure, returning read-only value.");
Christopher Tate06efb532012-08-24 15:29:27 -07001375 return Secure.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001376 }
Christopher Tate66488d62012-10-02 11:58:01 -07001377 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) {
Christopher Tate06efb532012-08-24 15:29:27 -07001378 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1379 + " to android.provider.Settings.Global, returning read-only value.");
1380 return Global.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001381 }
Christopher Tate06efb532012-08-24 15:29:27 -07001382 return sNameValueCache.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001383 }
1384
1385 /**
1386 * Store a name/value pair into the database.
1387 * @param resolver to access the database with
1388 * @param name to store
1389 * @param value to associate with the name
1390 * @return true if the value was set, false on database errors
1391 */
1392 public static boolean putString(ContentResolver resolver, String name, String value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001393 return putStringForUser(resolver, name, value, UserHandle.myUserId());
1394 }
1395
1396 /** @hide */
1397 public static boolean putStringForUser(ContentResolver resolver, String name, String value,
1398 int userHandle) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001399 if (MOVED_TO_SECURE.contains(name)) {
1400 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1401 + " to android.provider.Settings.Secure, value is unchanged.");
1402 return false;
1403 }
Christopher Tate66488d62012-10-02 11:58:01 -07001404 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) {
Christopher Tate06efb532012-08-24 15:29:27 -07001405 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1406 + " to android.provider.Settings.Global, value is unchanged.");
1407 return false;
1408 }
Christopher Tate06efb532012-08-24 15:29:27 -07001409 return sNameValueCache.putStringForUser(resolver, name, value, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001410 }
1411
1412 /**
1413 * Construct the content URI for a particular name/value pair,
1414 * useful for monitoring changes with a ContentObserver.
1415 * @param name to look up in the table
1416 * @return the corresponding content URI, or null if not present
1417 */
1418 public static Uri getUriFor(String name) {
1419 if (MOVED_TO_SECURE.contains(name)) {
1420 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1421 + " to android.provider.Settings.Secure, returning Secure URI.");
1422 return Secure.getUriFor(Secure.CONTENT_URI, name);
1423 }
Christopher Tate66488d62012-10-02 11:58:01 -07001424 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) {
Christopher Tate06efb532012-08-24 15:29:27 -07001425 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1426 + " to android.provider.Settings.Global, returning read-only global URI.");
1427 return Global.getUriFor(Global.CONTENT_URI, name);
1428 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001429 return getUriFor(CONTENT_URI, name);
1430 }
1431
1432 /**
1433 * Convenience function for retrieving a single system settings value
1434 * as an integer. Note that internally setting values are always
1435 * stored as strings; this function converts the string to an integer
1436 * for you. The default value will be returned if the setting is
1437 * not defined or not an integer.
1438 *
1439 * @param cr The ContentResolver to access.
1440 * @param name The name of the setting to retrieve.
1441 * @param def Value to return if the setting is not defined.
1442 *
1443 * @return The setting's current value, or 'def' if it is not defined
1444 * or not a valid integer.
1445 */
1446 public static int getInt(ContentResolver cr, String name, int def) {
Christopher Tate06efb532012-08-24 15:29:27 -07001447 return getIntForUser(cr, name, def, UserHandle.myUserId());
1448 }
1449
1450 /** @hide */
1451 public static int getIntForUser(ContentResolver cr, String name, int def, int userHandle) {
1452 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001453 try {
1454 return v != null ? Integer.parseInt(v) : def;
1455 } catch (NumberFormatException e) {
1456 return def;
1457 }
1458 }
1459
1460 /**
1461 * Convenience function for retrieving a single system settings value
1462 * as an integer. Note that internally setting values are always
1463 * stored as strings; this function converts the string to an integer
1464 * for you.
1465 * <p>
1466 * This version does not take a default value. If the setting has not
1467 * been set, or the string value is not a number,
1468 * it throws {@link SettingNotFoundException}.
1469 *
1470 * @param cr The ContentResolver to access.
1471 * @param name The name of the setting to retrieve.
1472 *
1473 * @throws SettingNotFoundException Thrown if a setting by the given
1474 * name can't be found or the setting value is not an integer.
1475 *
1476 * @return The setting's current value.
1477 */
1478 public static int getInt(ContentResolver cr, String name)
1479 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07001480 return getIntForUser(cr, name, UserHandle.myUserId());
1481 }
1482
1483 /** @hide */
1484 public static int getIntForUser(ContentResolver cr, String name, int userHandle)
1485 throws SettingNotFoundException {
1486 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001487 try {
1488 return Integer.parseInt(v);
1489 } catch (NumberFormatException e) {
1490 throw new SettingNotFoundException(name);
1491 }
1492 }
1493
1494 /**
1495 * Convenience function for updating a single settings value as an
1496 * integer. This will either create a new entry in the table if the
1497 * given name does not exist, or modify the value of the existing row
1498 * with that name. Note that internally setting values are always
1499 * stored as strings, so this function converts the given value to a
1500 * string before storing it.
1501 *
1502 * @param cr The ContentResolver to access.
1503 * @param name The name of the setting to modify.
1504 * @param value The new value for the setting.
1505 * @return true if the value was set, false on database errors
1506 */
1507 public static boolean putInt(ContentResolver cr, String name, int value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001508 return putIntForUser(cr, name, value, UserHandle.myUserId());
1509 }
1510
1511 /** @hide */
1512 public static boolean putIntForUser(ContentResolver cr, String name, int value,
1513 int userHandle) {
1514 return putStringForUser(cr, name, Integer.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001515 }
1516
1517 /**
1518 * Convenience function for retrieving a single system settings value
1519 * as a {@code long}. Note that internally setting values are always
1520 * stored as strings; this function converts the string to a {@code long}
1521 * for you. The default value will be returned if the setting is
1522 * not defined or not a {@code long}.
1523 *
1524 * @param cr The ContentResolver to access.
1525 * @param name The name of the setting to retrieve.
1526 * @param def Value to return if the setting is not defined.
1527 *
1528 * @return The setting's current value, or 'def' if it is not defined
1529 * or not a valid {@code long}.
1530 */
1531 public static long getLong(ContentResolver cr, String name, long def) {
Christopher Tate06efb532012-08-24 15:29:27 -07001532 return getLongForUser(cr, name, def, UserHandle.myUserId());
1533 }
1534
1535 /** @hide */
1536 public static long getLongForUser(ContentResolver cr, String name, long def,
1537 int userHandle) {
1538 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001539 long value;
1540 try {
1541 value = valString != null ? Long.parseLong(valString) : def;
1542 } catch (NumberFormatException e) {
1543 value = def;
1544 }
1545 return value;
1546 }
1547
1548 /**
1549 * Convenience function for retrieving a single system settings value
1550 * as a {@code long}. Note that internally setting values are always
1551 * stored as strings; this function converts the string to a {@code long}
1552 * for you.
1553 * <p>
1554 * This version does not take a default value. If the setting has not
1555 * been set, or the string value is not a number,
1556 * it throws {@link SettingNotFoundException}.
1557 *
1558 * @param cr The ContentResolver to access.
1559 * @param name The name of the setting to retrieve.
1560 *
1561 * @return The setting's current value.
1562 * @throws SettingNotFoundException Thrown if a setting by the given
1563 * name can't be found or the setting value is not an integer.
1564 */
1565 public static long getLong(ContentResolver cr, String name)
1566 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07001567 return getLongForUser(cr, name, UserHandle.myUserId());
1568 }
1569
1570 /** @hide */
1571 public static long getLongForUser(ContentResolver cr, String name, int userHandle)
1572 throws SettingNotFoundException {
1573 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001574 try {
1575 return Long.parseLong(valString);
1576 } catch (NumberFormatException e) {
1577 throw new SettingNotFoundException(name);
1578 }
1579 }
1580
1581 /**
1582 * Convenience function for updating a single settings value as a long
1583 * integer. This will either create a new entry in the table if the
1584 * given name does not exist, or modify the value of the existing row
1585 * with that name. Note that internally setting values are always
1586 * stored as strings, so this function converts the given value to a
1587 * string before storing it.
1588 *
1589 * @param cr The ContentResolver to access.
1590 * @param name The name of the setting to modify.
1591 * @param value The new value for the setting.
1592 * @return true if the value was set, false on database errors
1593 */
1594 public static boolean putLong(ContentResolver cr, String name, long value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001595 return putLongForUser(cr, name, value, UserHandle.myUserId());
1596 }
1597
1598 /** @hide */
1599 public static boolean putLongForUser(ContentResolver cr, String name, long value,
1600 int userHandle) {
1601 return putStringForUser(cr, name, Long.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001602 }
1603
1604 /**
1605 * Convenience function for retrieving a single system settings value
1606 * as a floating point number. Note that internally setting values are
1607 * always stored as strings; this function converts the string to an
1608 * float for you. The default value will be returned if the setting
1609 * is not defined or not a valid float.
1610 *
1611 * @param cr The ContentResolver to access.
1612 * @param name The name of the setting to retrieve.
1613 * @param def Value to return if the setting is not defined.
1614 *
1615 * @return The setting's current value, or 'def' if it is not defined
1616 * or not a valid float.
1617 */
1618 public static float getFloat(ContentResolver cr, String name, float def) {
Christopher Tate06efb532012-08-24 15:29:27 -07001619 return getFloatForUser(cr, name, def, UserHandle.myUserId());
1620 }
1621
1622 /** @hide */
1623 public static float getFloatForUser(ContentResolver cr, String name, float def,
1624 int userHandle) {
1625 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001626 try {
1627 return v != null ? Float.parseFloat(v) : def;
1628 } catch (NumberFormatException e) {
1629 return def;
1630 }
1631 }
1632
1633 /**
1634 * Convenience function for retrieving a single system settings value
1635 * as a float. Note that internally setting values are always
1636 * stored as strings; this function converts the string to a float
1637 * for you.
1638 * <p>
1639 * This version does not take a default value. If the setting has not
1640 * been set, or the string value is not a number,
1641 * it throws {@link SettingNotFoundException}.
1642 *
1643 * @param cr The ContentResolver to access.
1644 * @param name The name of the setting to retrieve.
1645 *
1646 * @throws SettingNotFoundException Thrown if a setting by the given
1647 * name can't be found or the setting value is not a float.
1648 *
1649 * @return The setting's current value.
1650 */
1651 public static float getFloat(ContentResolver cr, String name)
1652 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07001653 return getFloatForUser(cr, name, UserHandle.myUserId());
1654 }
1655
1656 /** @hide */
1657 public static float getFloatForUser(ContentResolver cr, String name, int userHandle)
1658 throws SettingNotFoundException {
1659 String v = getStringForUser(cr, name, userHandle);
Brian Muramatsue1d46982010-12-06 17:34:20 -08001660 if (v == null) {
1661 throw new SettingNotFoundException(name);
1662 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001663 try {
1664 return Float.parseFloat(v);
1665 } catch (NumberFormatException e) {
1666 throw new SettingNotFoundException(name);
1667 }
1668 }
1669
1670 /**
1671 * Convenience function for updating a single settings value as a
1672 * floating point number. This will either create a new entry in the
1673 * table if the given name does not exist, or modify the value of the
1674 * existing row with that name. Note that internally setting values
1675 * are always stored as strings, so this function converts the given
1676 * value to a string before storing it.
1677 *
1678 * @param cr The ContentResolver to access.
1679 * @param name The name of the setting to modify.
1680 * @param value The new value for the setting.
1681 * @return true if the value was set, false on database errors
1682 */
1683 public static boolean putFloat(ContentResolver cr, String name, float value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001684 return putFloatForUser(cr, name, value, UserHandle.myUserId());
1685 }
1686
1687 /** @hide */
1688 public static boolean putFloatForUser(ContentResolver cr, String name, float value,
1689 int userHandle) {
1690 return putStringForUser(cr, name, Float.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001691 }
1692
1693 /**
1694 * Convenience function to read all of the current
1695 * configuration-related settings into a
1696 * {@link Configuration} object.
1697 *
1698 * @param cr The ContentResolver to access.
1699 * @param outConfig Where to place the configuration settings.
1700 */
1701 public static void getConfiguration(ContentResolver cr, Configuration outConfig) {
Christopher Tate06efb532012-08-24 15:29:27 -07001702 getConfigurationForUser(cr, outConfig, UserHandle.myUserId());
1703 }
1704
1705 /** @hide */
1706 public static void getConfigurationForUser(ContentResolver cr, Configuration outConfig,
1707 int userHandle) {
1708 outConfig.fontScale = Settings.System.getFloatForUser(
1709 cr, FONT_SCALE, outConfig.fontScale, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001710 if (outConfig.fontScale < 0) {
1711 outConfig.fontScale = 1;
1712 }
1713 }
1714
1715 /**
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001716 * @hide Erase the fields in the Configuration that should be applied
1717 * by the settings.
1718 */
1719 public static void clearConfiguration(Configuration inoutConfig) {
1720 inoutConfig.fontScale = 0;
1721 }
Narayan Kamath6d632962011-08-24 11:51:37 +01001722
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001723 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001724 * Convenience function to write a batch of configuration-related
1725 * settings from a {@link Configuration} object.
1726 *
1727 * @param cr The ContentResolver to access.
1728 * @param config The settings to write.
1729 * @return true if the values were set, false on database errors
1730 */
1731 public static boolean putConfiguration(ContentResolver cr, Configuration config) {
Christopher Tate06efb532012-08-24 15:29:27 -07001732 return putConfigurationForUser(cr, config, UserHandle.myUserId());
1733 }
1734
1735 /** @hide */
1736 public static boolean putConfigurationForUser(ContentResolver cr, Configuration config,
1737 int userHandle) {
1738 return Settings.System.putFloatForUser(cr, FONT_SCALE, config.fontScale, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001739 }
1740
Dianne Hackbornb8b11a02010-03-10 15:53:11 -08001741 /** @hide */
1742 public static boolean hasInterestingConfigurationChanges(int changes) {
1743 return (changes&ActivityInfo.CONFIG_FONT_SCALE) != 0;
1744 }
Jaikumar Ganesh545e6702010-06-04 10:23:03 -07001745
Christopher Tate06efb532012-08-24 15:29:27 -07001746 /** @deprecated - Do not use */
1747 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001748 public static boolean getShowGTalkServiceStatus(ContentResolver cr) {
Christopher Tate06efb532012-08-24 15:29:27 -07001749 return getShowGTalkServiceStatusForUser(cr, UserHandle.myUserId());
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001750 }
1751
Christopher Tate06efb532012-08-24 15:29:27 -07001752 /**
1753 * @hide
1754 * @deprecated - Do not use
1755 */
1756 public static boolean getShowGTalkServiceStatusForUser(ContentResolver cr,
1757 int userHandle) {
1758 return getIntForUser(cr, SHOW_GTALK_SERVICE_STATUS, 0, userHandle) != 0;
1759 }
1760
1761 /** @deprecated - Do not use */
1762 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001763 public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) {
Christopher Tatec8c08382012-09-19 17:18:18 -07001764 setShowGTalkServiceStatusForUser(cr, flag, UserHandle.myUserId());
Christopher Tate06efb532012-08-24 15:29:27 -07001765 }
1766
1767 /**
1768 * @hide
1769 * @deprecated - Do not use
1770 */
1771 @Deprecated
1772 public static void setShowGTalkServiceStatusForUser(ContentResolver cr, boolean flag,
1773 int userHandle) {
1774 putIntForUser(cr, SHOW_GTALK_SERVICE_STATUS, flag ? 1 : 0, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001775 }
1776
Svetoslav683914b2015-01-15 14:22:26 -08001777 private static final class DiscreteValueValidator implements Validator {
1778 private final String[] mValues;
1779
1780 public DiscreteValueValidator(String[] values) {
1781 mValues = values;
1782 }
1783
Svetoslav1b71ea92015-02-17 18:20:29 -08001784 @Override
Svetoslav683914b2015-01-15 14:22:26 -08001785 public boolean validate(String value) {
1786 return ArrayUtils.contains(mValues, value);
1787 }
1788 }
1789
1790 private static final class InclusiveIntegerRangeValidator implements Validator {
1791 private final int mMin;
1792 private final int mMax;
1793
1794 public InclusiveIntegerRangeValidator(int min, int max) {
1795 mMin = min;
1796 mMax = max;
1797 }
1798
Svetoslav1b71ea92015-02-17 18:20:29 -08001799 @Override
Svetoslav683914b2015-01-15 14:22:26 -08001800 public boolean validate(String value) {
1801 try {
1802 final int intValue = Integer.parseInt(value);
1803 return intValue >= mMin && intValue <= mMax;
1804 } catch (NumberFormatException e) {
1805 return false;
1806 }
1807 }
1808 }
1809
1810 private static final class InclusiveFloatRangeValidator implements Validator {
1811 private final float mMin;
1812 private final float mMax;
1813
1814 public InclusiveFloatRangeValidator(float min, float max) {
1815 mMin = min;
1816 mMax = max;
1817 }
1818
Svetoslav1b71ea92015-02-17 18:20:29 -08001819 @Override
Svetoslav683914b2015-01-15 14:22:26 -08001820 public boolean validate(String value) {
1821 try {
1822 final float floatValue = Float.parseFloat(value);
1823 return floatValue >= mMin && floatValue <= mMax;
1824 } catch (NumberFormatException e) {
1825 return false;
1826 }
1827 }
1828 }
1829
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001830 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001831 * @deprecated Use {@link android.provider.Settings.Global#STAY_ON_WHILE_PLUGGED_IN} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001832 */
Christopher Tate06efb532012-08-24 15:29:27 -07001833 @Deprecated
1834 public static final String STAY_ON_WHILE_PLUGGED_IN = Global.STAY_ON_WHILE_PLUGGED_IN;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001835
1836 /**
1837 * What happens when the user presses the end call button if they're not
1838 * on a call.<br/>
1839 * <b>Values:</b><br/>
1840 * 0 - The end button does nothing.<br/>
1841 * 1 - The end button goes to the home screen.<br/>
1842 * 2 - The end button puts the device to sleep and locks the keyguard.<br/>
1843 * 3 - The end button goes to the home screen. If the user is already on the
1844 * home screen, it puts the device to sleep.
1845 */
1846 public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";
1847
Svetoslav683914b2015-01-15 14:22:26 -08001848 private static final Validator END_BUTTON_BEHAVIOR_VALIDATOR =
1849 new InclusiveIntegerRangeValidator(0, 3);
1850
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001851 /**
David Brown458e8062010-03-08 21:52:11 -08001852 * END_BUTTON_BEHAVIOR value for "go home".
1853 * @hide
1854 */
1855 public static final int END_BUTTON_BEHAVIOR_HOME = 0x1;
1856
1857 /**
1858 * END_BUTTON_BEHAVIOR value for "go to sleep".
1859 * @hide
1860 */
1861 public static final int END_BUTTON_BEHAVIOR_SLEEP = 0x2;
1862
1863 /**
1864 * END_BUTTON_BEHAVIOR default value.
1865 * @hide
1866 */
1867 public static final int END_BUTTON_BEHAVIOR_DEFAULT = END_BUTTON_BEHAVIOR_SLEEP;
1868
1869 /**
Joe Onorato9cdffa12011-04-06 18:27:27 -07001870 * Is advanced settings mode turned on. 0 == no, 1 == yes
1871 * @hide
1872 */
1873 public static final String ADVANCED_SETTINGS = "advanced_settings";
1874
Svetoslav683914b2015-01-15 14:22:26 -08001875 private static final Validator ADVANCED_SETTINGS_VALIDATOR = sBooleanValidator;
1876
Joe Onorato9cdffa12011-04-06 18:27:27 -07001877 /**
1878 * ADVANCED_SETTINGS default value.
1879 * @hide
1880 */
1881 public static final int ADVANCED_SETTINGS_DEFAULT = 0;
1882
1883 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001884 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001885 */
Christopher Tate06efb532012-08-24 15:29:27 -07001886 @Deprecated
1887 public static final String AIRPLANE_MODE_ON = Global.AIRPLANE_MODE_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001888
1889 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001890 * @deprecated Use {@link android.provider.Settings.Global#RADIO_BLUETOOTH} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001891 */
Christopher Tate06efb532012-08-24 15:29:27 -07001892 @Deprecated
1893 public static final String RADIO_BLUETOOTH = Global.RADIO_BLUETOOTH;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001894
1895 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001896 * @deprecated Use {@link android.provider.Settings.Global#RADIO_WIFI} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001897 */
Christopher Tate06efb532012-08-24 15:29:27 -07001898 @Deprecated
1899 public static final String RADIO_WIFI = Global.RADIO_WIFI;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001900
Robert Greenwalt8588e472011-11-08 10:12:25 -08001901 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001902 * @deprecated Use {@link android.provider.Settings.Global#RADIO_WIMAX} instead
Robert Greenwalt8588e472011-11-08 10:12:25 -08001903 * {@hide}
1904 */
Christopher Tate06efb532012-08-24 15:29:27 -07001905 @Deprecated
1906 public static final String RADIO_WIMAX = Global.RADIO_WIMAX;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001907
1908 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001909 * @deprecated Use {@link android.provider.Settings.Global#RADIO_CELL} instead
Nick Pelly8d32a012011-08-09 07:03:49 -07001910 */
Christopher Tate06efb532012-08-24 15:29:27 -07001911 @Deprecated
1912 public static final String RADIO_CELL = Global.RADIO_CELL;
Nick Pelly8d32a012011-08-09 07:03:49 -07001913
1914 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001915 * @deprecated Use {@link android.provider.Settings.Global#RADIO_NFC} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001916 */
Christopher Tate06efb532012-08-24 15:29:27 -07001917 @Deprecated
1918 public static final String RADIO_NFC = Global.RADIO_NFC;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001919
1920 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001921 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_RADIOS} instead
1922 */
1923 @Deprecated
1924 public static final String AIRPLANE_MODE_RADIOS = Global.AIRPLANE_MODE_RADIOS;
1925
1926 /**
1927 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_TOGGLEABLE_RADIOS} instead
Mike Lockwoodbd5ddf02009-07-29 21:37:14 -07001928 *
1929 * {@hide}
1930 */
Christopher Tate06efb532012-08-24 15:29:27 -07001931 @Deprecated
1932 public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS =
1933 Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS;
Mike Lockwoodbd5ddf02009-07-29 21:37:14 -07001934
1935 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001936 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001937 */
Christopher Tate06efb532012-08-24 15:29:27 -07001938 @Deprecated
1939 public static final String WIFI_SLEEP_POLICY = Global.WIFI_SLEEP_POLICY;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001940
1941 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001942 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_DEFAULT} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001943 */
Christopher Tate06efb532012-08-24 15:29:27 -07001944 @Deprecated
1945 public static final int WIFI_SLEEP_POLICY_DEFAULT = Global.WIFI_SLEEP_POLICY_DEFAULT;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001946
1947 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001948 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001949 */
Christopher Tate06efb532012-08-24 15:29:27 -07001950 @Deprecated
1951 public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED =
1952 Global.WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07001953
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001954 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001955 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_NEVER} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001956 */
Christopher Tate06efb532012-08-24 15:29:27 -07001957 @Deprecated
1958 public static final int WIFI_SLEEP_POLICY_NEVER = Global.WIFI_SLEEP_POLICY_NEVER;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07001959
Eric Laurentbc0fab1f2012-09-19 11:24:41 -07001960 /**
1961 * @deprecated Use {@link android.provider.Settings.Global#MODE_RINGER} instead
1962 */
1963 @Deprecated
1964 public static final String MODE_RINGER = Global.MODE_RINGER;
1965
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001966 /**
1967 * Whether to use static IP and other static network attributes.
1968 * <p>
1969 * Set to 1 for true and 0 for false.
Jeff Sharkey625239a2012-09-26 22:03:49 -07001970 *
1971 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001972 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07001973 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001974 public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
1975
Svetoslav683914b2015-01-15 14:22:26 -08001976 private static final Validator WIFI_USE_STATIC_IP_VALIDATOR = sBooleanValidator;
1977
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001978 /**
1979 * The static IP address.
1980 * <p>
1981 * Example: "192.168.1.51"
Jeff Sharkey625239a2012-09-26 22:03:49 -07001982 *
1983 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001984 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07001985 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001986 public static final String WIFI_STATIC_IP = "wifi_static_ip";
1987
Svetoslav683914b2015-01-15 14:22:26 -08001988 private static final Validator WIFI_STATIC_IP_VALIDATOR = sLenientIpAddressValidator;
1989
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001990 /**
1991 * If using static IP, the gateway's IP address.
1992 * <p>
1993 * Example: "192.168.1.1"
Jeff Sharkey625239a2012-09-26 22:03:49 -07001994 *
1995 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001996 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07001997 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001998 public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
1999
Svetoslav683914b2015-01-15 14:22:26 -08002000 private static final Validator WIFI_STATIC_GATEWAY_VALIDATOR = sLenientIpAddressValidator;
2001
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002002 /**
2003 * If using static IP, the net mask.
2004 * <p>
2005 * Example: "255.255.255.0"
Jeff Sharkey625239a2012-09-26 22:03:49 -07002006 *
2007 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002008 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07002009 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002010 public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask";
2011
Svetoslav683914b2015-01-15 14:22:26 -08002012 private static final Validator WIFI_STATIC_NETMASK_VALIDATOR = sLenientIpAddressValidator;
2013
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002014 /**
2015 * If using static IP, the primary DNS's IP address.
2016 * <p>
2017 * Example: "192.168.1.1"
Jeff Sharkey625239a2012-09-26 22:03:49 -07002018 *
2019 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002020 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07002021 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002022 public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1";
2023
Svetoslav683914b2015-01-15 14:22:26 -08002024 private static final Validator WIFI_STATIC_DNS1_VALIDATOR = sLenientIpAddressValidator;
2025
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002026 /**
2027 * If using static IP, the secondary DNS's IP address.
2028 * <p>
2029 * Example: "192.168.1.2"
Jeff Sharkey625239a2012-09-26 22:03:49 -07002030 *
2031 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002032 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07002033 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002034 public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2";
2035
Svetoslav683914b2015-01-15 14:22:26 -08002036 private static final Validator WIFI_STATIC_DNS2_VALIDATOR = sLenientIpAddressValidator;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002037
2038 /**
2039 * Determines whether remote devices may discover and/or connect to
2040 * this device.
2041 * <P>Type: INT</P>
2042 * 2 -- discoverable and connectable
2043 * 1 -- connectable but not discoverable
2044 * 0 -- neither connectable nor discoverable
2045 */
2046 public static final String BLUETOOTH_DISCOVERABILITY =
2047 "bluetooth_discoverability";
2048
Svetoslav683914b2015-01-15 14:22:26 -08002049 private static final Validator BLUETOOTH_DISCOVERABILITY_VALIDATOR =
2050 new InclusiveIntegerRangeValidator(0, 2);
2051
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002052 /**
2053 * Bluetooth discoverability timeout. If this value is nonzero, then
2054 * Bluetooth becomes discoverable for a certain number of seconds,
2055 * after which is becomes simply connectable. The value is in seconds.
2056 */
2057 public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT =
2058 "bluetooth_discoverability_timeout";
2059
Svetoslav683914b2015-01-15 14:22:26 -08002060 private static final Validator BLUETOOTH_DISCOVERABILITY_TIMEOUT_VALIDATOR =
2061 sNonNegativeIntegerValidator;
2062
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002063 /**
Amith Yamasani156c4352010-03-05 17:10:03 -08002064 * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_ENABLED}
2065 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002066 */
Amith Yamasani156c4352010-03-05 17:10:03 -08002067 @Deprecated
2068 public static final String LOCK_PATTERN_ENABLED = Secure.LOCK_PATTERN_ENABLED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002069
2070 /**
Amith Yamasani156c4352010-03-05 17:10:03 -08002071 * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_VISIBLE}
2072 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002073 */
Amith Yamasani156c4352010-03-05 17:10:03 -08002074 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002075 public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
2076
2077 /**
Jaikumar Ganesh545e6702010-06-04 10:23:03 -07002078 * @deprecated Use
Amith Yamasani156c4352010-03-05 17:10:03 -08002079 * {@link android.provider.Settings.Secure#LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED}
2080 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002081 */
Amith Yamasani156c4352010-03-05 17:10:03 -08002082 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002083 public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED =
2084 "lock_pattern_tactile_feedback_enabled";
2085
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002086 /**
2087 * A formatted string of the next alarm that is set, or the empty string
2088 * if there is no alarm set.
Adrian Roosc42a1e12014-07-07 23:35:53 +02002089 *
2090 * @deprecated Use {@link android.app.AlarmManager#getNextAlarmClock()}.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002091 */
Adrian Roosc42a1e12014-07-07 23:35:53 +02002092 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002093 public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted";
2094
Svetoslav683914b2015-01-15 14:22:26 -08002095 private static final Validator NEXT_ALARM_FORMATTED_VALIDATOR = new Validator() {
2096 private static final int MAX_LENGTH = 1000;
Svetoslav1b71ea92015-02-17 18:20:29 -08002097
Svetoslav683914b2015-01-15 14:22:26 -08002098 @Override
2099 public boolean validate(String value) {
2100 // TODO: No idea what the correct format is.
Svetoslav64d6e9c2015-02-12 11:30:36 -08002101 return value == null || value.length() < MAX_LENGTH;
Svetoslav683914b2015-01-15 14:22:26 -08002102 }
2103 };
2104
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002105 /**
2106 * Scaling factor for fonts, float.
2107 */
2108 public static final String FONT_SCALE = "font_scale";
2109
Svetoslav683914b2015-01-15 14:22:26 -08002110 private static final Validator FONT_SCALE_VALIDATOR = new Validator() {
2111 @Override
2112 public boolean validate(String value) {
2113 try {
2114 return Float.parseFloat(value) >= 0;
2115 } catch (NumberFormatException e) {
2116 return false;
2117 }
2118 }
2119 };
2120
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002121 /**
2122 * Name of an application package to be debugged.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002123 *
2124 * @deprecated Use {@link Global#DEBUG_APP} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002125 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002126 @Deprecated
2127 public static final String DEBUG_APP = Global.DEBUG_APP;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002128
2129 /**
2130 * If 1, when launching DEBUG_APP it will wait for the debugger before
2131 * starting user code. If 0, it will run normally.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002132 *
2133 * @deprecated Use {@link Global#WAIT_FOR_DEBUGGER} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002134 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002135 @Deprecated
2136 public static final String WAIT_FOR_DEBUGGER = Global.WAIT_FOR_DEBUGGER;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002137
2138 /**
2139 * Whether or not to dim the screen. 0=no 1=yes
Jeff Brown96307042012-07-27 15:51:34 -07002140 * @deprecated This setting is no longer used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002141 */
Jeff Brown96307042012-07-27 15:51:34 -07002142 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002143 public static final String DIM_SCREEN = "dim_screen";
2144
Svetoslav683914b2015-01-15 14:22:26 -08002145 private static final Validator DIM_SCREEN_VALIDATOR = sBooleanValidator;
2146
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002147 /**
Jeff Brown05af6ad2014-09-30 20:54:30 -07002148 * The amount of time in milliseconds before the device goes to sleep or begins
2149 * to dream after a period of inactivity. This value is also known as the
2150 * user activity timeout period since the screen isn't necessarily turned off
2151 * when it expires.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002152 */
2153 public static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout";
2154
Svetoslav683914b2015-01-15 14:22:26 -08002155 private static final Validator SCREEN_OFF_TIMEOUT_VALIDATOR = sNonNegativeIntegerValidator;
2156
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002157 /**
2158 * The screen backlight brightness between 0 and 255.
2159 */
2160 public static final String SCREEN_BRIGHTNESS = "screen_brightness";
2161
Svetoslav683914b2015-01-15 14:22:26 -08002162 private static final Validator SCREEN_BRIGHTNESS_VALIDATOR =
2163 new InclusiveIntegerRangeValidator(0, 255);
2164
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002165 /**
Dan Murphy951764b2009-08-27 14:59:03 -05002166 * Control whether to enable automatic brightness mode.
Dan Murphy951764b2009-08-27 14:59:03 -05002167 */
2168 public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
2169
Svetoslav683914b2015-01-15 14:22:26 -08002170 private static final Validator SCREEN_BRIGHTNESS_MODE_VALIDATOR = sBooleanValidator;
2171
Dan Murphy951764b2009-08-27 14:59:03 -05002172 /**
Dianne Hackbornd9ea4682012-01-20 18:36:40 -08002173 * Adjustment to auto-brightness to make it generally more (>0.0 <1.0)
2174 * or less (<0.0 >-1.0) bright.
Dianne Hackborn518a3d82012-05-09 16:30:49 -07002175 * @hide
Dianne Hackbornd9ea4682012-01-20 18:36:40 -08002176 */
2177 public static final String SCREEN_AUTO_BRIGHTNESS_ADJ = "screen_auto_brightness_adj";
2178
Svetoslav683914b2015-01-15 14:22:26 -08002179 private static final Validator SCREEN_AUTO_BRIGHTNESS_ADJ_VALIDATOR =
2180 new InclusiveFloatRangeValidator(-1, 1);
2181
Dianne Hackbornd9ea4682012-01-20 18:36:40 -08002182 /**
Mike Lockwooddc3494e2009-10-14 21:17:09 -07002183 * SCREEN_BRIGHTNESS_MODE value for manual mode.
Mike Lockwooddc3494e2009-10-14 21:17:09 -07002184 */
2185 public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = 0;
2186
2187 /**
Scott Main52bfc242012-02-09 10:09:14 -08002188 * SCREEN_BRIGHTNESS_MODE value for automatic mode.
Mike Lockwooddc3494e2009-10-14 21:17:09 -07002189 */
2190 public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1;
2191
2192 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002193 * Control whether the process CPU usage meter should be shown.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002194 *
2195 * @deprecated Use {@link Global#SHOW_PROCESSES} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002196 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002197 @Deprecated
2198 public static final String SHOW_PROCESSES = Global.SHOW_PROCESSES;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002199
2200 /**
2201 * If 1, the activity manager will aggressively finish activities and
2202 * processes as soon as they are no longer needed. If 0, the normal
2203 * extended lifetime is used.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002204 *
2205 * @deprecated Use {@link Global#ALWAYS_FINISH_ACTIVITIES} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002206 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002207 @Deprecated
2208 public static final String ALWAYS_FINISH_ACTIVITIES = Global.ALWAYS_FINISH_ACTIVITIES;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002209
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002210 /**
2211 * Determines which streams are affected by ringer mode changes. The
2212 * stream type's bit should be set to 1 if it should be muted when going
2213 * into an inaudible ringer mode.
2214 */
2215 public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected";
2216
Svetoslav683914b2015-01-15 14:22:26 -08002217 private static final Validator MODE_RINGER_STREAMS_AFFECTED_VALIDATOR =
2218 sNonNegativeIntegerValidator;
2219
2220 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002221 * Determines which streams are affected by mute. The
2222 * stream type's bit should be set to 1 if it should be muted when a mute request
2223 * is received.
2224 */
Svetoslav683914b2015-01-15 14:22:26 -08002225 public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected";
2226
2227 private static final Validator MUTE_STREAMS_AFFECTED_VALIDATOR =
2228 sNonNegativeIntegerValidator;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002229
2230 /**
2231 * Whether vibrate is on for different events. This is used internally,
2232 * changing this value will not change the vibrate. See AudioManager.
2233 */
2234 public static final String VIBRATE_ON = "vibrate_on";
2235
Svetoslav683914b2015-01-15 14:22:26 -08002236 private static final Validator VIBRATE_ON_VALIDATOR = sBooleanValidator;
2237
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002238 /**
Jeff Brown7f6c2312012-04-13 20:38:38 -07002239 * If 1, redirects the system vibrator to all currently attached input devices
2240 * that support vibration. If there are no such input devices, then the system
2241 * vibrator is used instead.
2242 * If 0, does not register the system vibrator.
2243 *
2244 * This setting is mainly intended to provide a compatibility mechanism for
2245 * applications that only know about the system vibrator and do not use the
2246 * input device vibrator API.
2247 *
2248 * @hide
2249 */
2250 public static final String VIBRATE_INPUT_DEVICES = "vibrate_input_devices";
2251
Svetoslav683914b2015-01-15 14:22:26 -08002252 private static final Validator VIBRATE_INPUT_DEVICES_VALIDATOR = sBooleanValidator;
2253
Jeff Brown7f6c2312012-04-13 20:38:38 -07002254 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002255 * Ringer volume. This is used internally, changing this value will not
2256 * change the volume. See AudioManager.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002257 *
2258 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002259 */
2260 public static final String VOLUME_RING = "volume_ring";
2261
2262 /**
2263 * System/notifications volume. This is used internally, changing this
2264 * value will not change the volume. See AudioManager.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002265 *
2266 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002267 */
2268 public static final String VOLUME_SYSTEM = "volume_system";
2269
2270 /**
2271 * Voice call volume. This is used internally, changing this value will
2272 * not change the volume. See AudioManager.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002273 *
2274 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002275 */
2276 public static final String VOLUME_VOICE = "volume_voice";
2277
2278 /**
2279 * Music/media/gaming volume. This is used internally, changing this
2280 * value will not change the volume. See AudioManager.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002281 *
2282 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002283 */
2284 public static final String VOLUME_MUSIC = "volume_music";
2285
2286 /**
2287 * Alarm volume. This is used internally, changing this
2288 * value will not change the volume. See AudioManager.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002289 *
2290 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002291 */
2292 public static final String VOLUME_ALARM = "volume_alarm";
2293
2294 /**
2295 * Notification volume. This is used internally, changing this
2296 * value will not change the volume. See AudioManager.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002297 *
2298 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002299 */
2300 public static final String VOLUME_NOTIFICATION = "volume_notification";
2301
2302 /**
Eric Laurent484d2882009-12-08 09:05:45 -08002303 * Bluetooth Headset volume. This is used internally, changing this value will
2304 * not change the volume. See AudioManager.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002305 *
2306 * @removed Not used by anything since API 2.
Eric Laurent484d2882009-12-08 09:05:45 -08002307 */
2308 public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";
2309
2310 /**
Mike Lockwood8517e462011-10-25 14:47:19 -04002311 * Master volume (float in the range 0.0f to 1.0f).
Svetoslavdbbeeb32015-02-18 19:16:25 -08002312 *
Mike Lockwood8517e462011-10-25 14:47:19 -04002313 * @hide
2314 */
2315 public static final String VOLUME_MASTER = "volume_master";
2316
2317 /**
Justin Koh57978ed2012-04-03 17:37:58 -07002318 * Master volume mute (int 1 = mute, 0 = not muted).
2319 *
2320 * @hide
2321 */
2322 public static final String VOLUME_MASTER_MUTE = "volume_master_mute";
2323
Svetoslav683914b2015-01-15 14:22:26 -08002324 private static final Validator VOLUME_MASTER_MUTE_VALIDATOR = sBooleanValidator;
2325
Justin Koh57978ed2012-04-03 17:37:58 -07002326 /**
Julia Reynoldsb53453f2014-08-22 11:42:43 -04002327 * Microphone mute (int 1 = mute, 0 = not muted).
2328 *
2329 * @hide
2330 */
2331 public static final String MICROPHONE_MUTE = "microphone_mute";
2332
Svetoslav683914b2015-01-15 14:22:26 -08002333 private static final Validator MICROPHONE_MUTE_VALIDATOR = sBooleanValidator;
2334
Julia Reynoldsb53453f2014-08-22 11:42:43 -04002335 /**
Justin Koh57978ed2012-04-03 17:37:58 -07002336 * Whether the notifications should use the ring volume (value of 1) or
2337 * a separate notification volume (value of 0). In most cases, users
2338 * will have this enabled so the notification and ringer volumes will be
2339 * the same. However, power users can disable this and use the separate
2340 * notification volume control.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002341 * <p>
Justin Koh57978ed2012-04-03 17:37:58 -07002342 * Note: This is a one-off setting that will be removed in the future
2343 * when there is profile support. For this reason, it is kept hidden
2344 * from the public APIs.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002345 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002346 * @hide
Amith Yamasani42722bf2011-07-22 10:34:27 -07002347 * @deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002348 */
Gilles Debunnee90bed12011-08-30 14:28:27 -07002349 @Deprecated
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002350 public static final String NOTIFICATIONS_USE_RING_VOLUME =
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002351 "notifications_use_ring_volume";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002352
Svetoslav683914b2015-01-15 14:22:26 -08002353 private static final Validator NOTIFICATIONS_USE_RING_VOLUME_VALIDATOR = sBooleanValidator;
2354
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002355 /**
Daniel Sandler6329bf72010-02-26 15:17:44 -05002356 * Whether silent mode should allow vibration feedback. This is used
2357 * internally in AudioService and the Sound settings activity to
2358 * coordinate decoupling of vibrate and silent modes. This setting
2359 * will likely be removed in a future release with support for
2360 * audio/vibe feedback profiles.
2361 *
Eric Laurentbffc3d12012-05-07 17:43:49 -07002362 * Not used anymore. On devices with vibrator, the user explicitly selects
2363 * silent or vibrate mode.
2364 * Kept for use by legacy database upgrade code in DatabaseHelper.
Daniel Sandler6329bf72010-02-26 15:17:44 -05002365 * @hide
2366 */
2367 public static final String VIBRATE_IN_SILENT = "vibrate_in_silent";
2368
Svetoslav683914b2015-01-15 14:22:26 -08002369 private static final Validator VIBRATE_IN_SILENT_VALIDATOR = sBooleanValidator;
2370
Daniel Sandler6329bf72010-02-26 15:17:44 -05002371 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002372 * The mapping of stream type (integer) to its setting.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002373 *
2374 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002375 */
2376 public static final String[] VOLUME_SETTINGS = {
2377 VOLUME_VOICE, VOLUME_SYSTEM, VOLUME_RING, VOLUME_MUSIC,
Eric Laurent484d2882009-12-08 09:05:45 -08002378 VOLUME_ALARM, VOLUME_NOTIFICATION, VOLUME_BLUETOOTH_SCO
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002379 };
2380
2381 /**
2382 * Appended to various volume related settings to record the previous
2383 * values before they the settings were affected by a silent/vibrate
2384 * ringer mode change.
Svetoslavdbbeeb32015-02-18 19:16:25 -08002385 *
2386 * @removed Not used by anything since API 2.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002387 */
2388 public static final String APPEND_FOR_LAST_AUDIBLE = "_last_audible";
2389
2390 /**
2391 * Persistent store for the system-wide default ringtone URI.
2392 * <p>
2393 * If you need to play the default ringtone at any given time, it is recommended
2394 * you give {@link #DEFAULT_RINGTONE_URI} to the media player. It will resolve
2395 * to the set default ringtone at the time of playing.
2396 *
2397 * @see #DEFAULT_RINGTONE_URI
2398 */
2399 public static final String RINGTONE = "ringtone";
2400
Svetoslav683914b2015-01-15 14:22:26 -08002401 private static final Validator RINGTONE_VALIDATOR = sUriValidator;
2402
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002403 /**
2404 * A {@link Uri} that will point to the current default ringtone at any
2405 * given time.
2406 * <p>
2407 * If the current default ringtone is in the DRM provider and the caller
2408 * does not have permission, the exception will be a
2409 * FileNotFoundException.
2410 */
2411 public static final Uri DEFAULT_RINGTONE_URI = getUriFor(RINGTONE);
2412
2413 /**
2414 * Persistent store for the system-wide default notification sound.
2415 *
2416 * @see #RINGTONE
2417 * @see #DEFAULT_NOTIFICATION_URI
2418 */
2419 public static final String NOTIFICATION_SOUND = "notification_sound";
2420
Svetoslav683914b2015-01-15 14:22:26 -08002421 private static final Validator NOTIFICATION_SOUND_VALIDATOR = sUriValidator;
2422
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002423 /**
2424 * A {@link Uri} that will point to the current default notification
2425 * sound at any given time.
2426 *
2427 * @see #DEFAULT_RINGTONE_URI
2428 */
2429 public static final Uri DEFAULT_NOTIFICATION_URI = getUriFor(NOTIFICATION_SOUND);
2430
2431 /**
Patrick Scott3156bb002009-04-13 09:57:38 -07002432 * Persistent store for the system-wide default alarm alert.
2433 *
2434 * @see #RINGTONE
2435 * @see #DEFAULT_ALARM_ALERT_URI
2436 */
2437 public static final String ALARM_ALERT = "alarm_alert";
2438
Svetoslav683914b2015-01-15 14:22:26 -08002439 private static final Validator ALARM_ALERT_VALIDATOR = sUriValidator;
2440
Patrick Scott3156bb002009-04-13 09:57:38 -07002441 /**
2442 * A {@link Uri} that will point to the current default alarm alert at
2443 * any given time.
2444 *
2445 * @see #DEFAULT_ALARM_ALERT_URI
2446 */
2447 public static final Uri DEFAULT_ALARM_ALERT_URI = getUriFor(ALARM_ALERT);
2448
2449 /**
Jean-Michel Trivid589fea2011-04-15 11:28:10 -07002450 * Persistent store for the system default media button event receiver.
2451 *
2452 * @hide
2453 */
2454 public static final String MEDIA_BUTTON_RECEIVER = "media_button_receiver";
2455
Svetoslav683914b2015-01-15 14:22:26 -08002456 private static final Validator MEDIA_BUTTON_RECEIVER_VALIDATOR = new Validator() {
2457 @Override
2458 public boolean validate(String value) {
2459 try {
2460 ComponentName.unflattenFromString(value);
2461 return true;
2462 } catch (NullPointerException e) {
2463 return false;
2464 }
2465 }
2466 };
2467
Jean-Michel Trivid589fea2011-04-15 11:28:10 -07002468 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002469 * Setting to enable Auto Replace (AutoText) in text editors. 1 = On, 0 = Off
2470 */
2471 public static final String TEXT_AUTO_REPLACE = "auto_replace";
2472
Svetoslav683914b2015-01-15 14:22:26 -08002473 private static final Validator TEXT_AUTO_REPLACE_VALIDATOR = sBooleanValidator;
2474
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002475 /**
2476 * Setting to enable Auto Caps in text editors. 1 = On, 0 = Off
2477 */
2478 public static final String TEXT_AUTO_CAPS = "auto_caps";
2479
Svetoslav683914b2015-01-15 14:22:26 -08002480 private static final Validator TEXT_AUTO_CAPS_VALIDATOR = sBooleanValidator;
2481
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002482 /**
2483 * Setting to enable Auto Punctuate in text editors. 1 = On, 0 = Off. This
2484 * feature converts two spaces to a "." and space.
2485 */
2486 public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002487
Svetoslav683914b2015-01-15 14:22:26 -08002488 private static final Validator TEXT_AUTO_PUNCTUATE_VALIDATOR = sBooleanValidator;
2489
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002490 /**
2491 * Setting to showing password characters in text editors. 1 = On, 0 = Off
2492 */
2493 public static final String TEXT_SHOW_PASSWORD = "show_password";
2494
Svetoslav683914b2015-01-15 14:22:26 -08002495 private static final Validator TEXT_SHOW_PASSWORD_VALIDATOR = sBooleanValidator;
2496
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002497 public static final String SHOW_GTALK_SERVICE_STATUS =
2498 "SHOW_GTALK_SERVICE_STATUS";
2499
Svetoslav683914b2015-01-15 14:22:26 -08002500 private static final Validator SHOW_GTALK_SERVICE_STATUS_VALIDATOR = sBooleanValidator;
2501
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002502 /**
2503 * Name of activity to use for wallpaper on the home screen.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002504 *
2505 * @deprecated Use {@link WallpaperManager} instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002506 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002507 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002508 public static final String WALLPAPER_ACTIVITY = "wallpaper_activity";
2509
Svetoslav683914b2015-01-15 14:22:26 -08002510 private static final Validator WALLPAPER_ACTIVITY_VALIDATOR = new Validator() {
2511 private static final int MAX_LENGTH = 1000;
2512
2513 @Override
2514 public boolean validate(String value) {
2515 if (value != null && value.length() > MAX_LENGTH) {
2516 return false;
2517 }
2518 return ComponentName.unflattenFromString(value) != null;
2519 }
2520 };
2521
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002522 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002523 * @deprecated Use {@link android.provider.Settings.Global#AUTO_TIME}
2524 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002525 */
Christopher Tate06efb532012-08-24 15:29:27 -07002526 @Deprecated
2527 public static final String AUTO_TIME = Global.AUTO_TIME;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002528
2529 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002530 * @deprecated Use {@link android.provider.Settings.Global#AUTO_TIME_ZONE}
2531 * instead
Amith Yamasaniad450be2010-09-16 16:47:00 -07002532 */
Christopher Tate06efb532012-08-24 15:29:27 -07002533 @Deprecated
2534 public static final String AUTO_TIME_ZONE = Global.AUTO_TIME_ZONE;
Amith Yamasaniad450be2010-09-16 16:47:00 -07002535
2536 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002537 * Display times as 12 or 24 hours
2538 * 12
2539 * 24
2540 */
2541 public static final String TIME_12_24 = "time_12_24";
2542
Svetoslav683914b2015-01-15 14:22:26 -08002543 /** @hide */
2544 public static final Validator TIME_12_24_VALIDATOR =
2545 new DiscreteValueValidator(new String[] {"12", "24"});
2546
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002547 /**
2548 * Date format string
2549 * mm/dd/yyyy
2550 * dd/mm/yyyy
2551 * yyyy/mm/dd
2552 */
2553 public static final String DATE_FORMAT = "date_format";
2554
Svetoslav683914b2015-01-15 14:22:26 -08002555 /** @hide */
2556 public static final Validator DATE_FORMAT_VALIDATOR = new Validator() {
2557 @Override
2558 public boolean validate(String value) {
2559 try {
2560 new SimpleDateFormat(value);
2561 return true;
2562 } catch (IllegalArgumentException e) {
2563 return false;
2564 }
2565 }
2566 };
2567
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002568 /**
2569 * Whether the setup wizard has been run before (on first boot), or if
2570 * it still needs to be run.
2571 *
2572 * nonzero = it has been run in the past
2573 * 0 = it has not been run in the past
2574 */
2575 public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run";
2576
Svetoslav683914b2015-01-15 14:22:26 -08002577 /** @hide */
2578 public static final Validator SETUP_WIZARD_HAS_RUN_VALIDATOR = sBooleanValidator;
2579
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002580 /**
2581 * Scaling factor for normal window animations. Setting to 0 will disable window
2582 * animations.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002583 *
2584 * @deprecated Use {@link Global#WINDOW_ANIMATION_SCALE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002585 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002586 @Deprecated
2587 public static final String WINDOW_ANIMATION_SCALE = Global.WINDOW_ANIMATION_SCALE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002588
2589 /**
2590 * Scaling factor for activity transition animations. Setting to 0 will disable window
2591 * animations.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002592 *
2593 * @deprecated Use {@link Global#TRANSITION_ANIMATION_SCALE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002594 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002595 @Deprecated
2596 public static final String TRANSITION_ANIMATION_SCALE = Global.TRANSITION_ANIMATION_SCALE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002597
2598 /**
Chet Haasec38fa1f2012-02-01 16:37:46 -08002599 * Scaling factor for Animator-based animations. This affects both the start delay and
2600 * duration of all such animations. Setting to 0 will cause animations to end immediately.
2601 * The default value is 1.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002602 *
2603 * @deprecated Use {@link Global#ANIMATOR_DURATION_SCALE} instead
Chet Haasec38fa1f2012-02-01 16:37:46 -08002604 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002605 @Deprecated
2606 public static final String ANIMATOR_DURATION_SCALE = Global.ANIMATOR_DURATION_SCALE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002607
2608 /**
2609 * Control whether the accelerometer will be used to change screen
2610 * orientation. If 0, it will not be used unless explicitly requested
2611 * by the application; if 1, it will be used by default unless explicitly
2612 * disabled by the application.
2613 */
2614 public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation";
2615
Svetoslav683914b2015-01-15 14:22:26 -08002616 /** @hide */
2617 public static final Validator ACCELEROMETER_ROTATION_VALIDATOR = sBooleanValidator;
2618
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002619 /**
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002620 * Default screen rotation when no other policy applies.
2621 * When {@link #ACCELEROMETER_ROTATION} is zero and no on-screen Activity expresses a
2622 * preference, this rotation value will be used. Must be one of the
Brian Muramatsue1d46982010-12-06 17:34:20 -08002623 * {@link android.view.Surface#ROTATION_0 Surface rotation constants}.
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002624 *
Dianne Hackborn16ec0802014-08-15 18:32:33 -07002625 * @see android.view.Display#getRotation
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002626 */
2627 public static final String USER_ROTATION = "user_rotation";
2628
Svetoslav683914b2015-01-15 14:22:26 -08002629 /** @hide */
2630 public static final Validator USER_ROTATION_VALIDATOR =
2631 new InclusiveIntegerRangeValidator(0, 3);
2632
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002633 /**
Jeff Brown207673cd2012-06-05 17:47:11 -07002634 * Control whether the rotation lock toggle in the System UI should be hidden.
2635 * Typically this is done for accessibility purposes to make it harder for
2636 * the user to accidentally toggle the rotation lock while the display rotation
2637 * has been locked for accessibility.
2638 *
2639 * If 0, then rotation lock toggle is not hidden for accessibility (although it may be
2640 * unavailable for other reasons). If 1, then the rotation lock toggle is hidden.
2641 *
2642 * @hide
2643 */
2644 public static final String HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY =
2645 "hide_rotation_lock_toggle_for_accessibility";
2646
Svetoslav683914b2015-01-15 14:22:26 -08002647 /** @hide */
2648 public static final Validator HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY_VALIDATOR =
2649 sBooleanValidator;
2650
Jeff Brown207673cd2012-06-05 17:47:11 -07002651 /**
Daisuke Miyakawa3c60eeb2012-05-08 12:08:25 -07002652 * Whether the phone vibrates when it is ringing due to an incoming call. This will
2653 * be used by Phone and Setting apps; it shouldn't affect other apps.
2654 * The value is boolean (1 or 0).
2655 *
2656 * Note: this is not same as "vibrate on ring", which had been available until ICS.
2657 * It was about AudioManager's setting and thus affected all the applications which
2658 * relied on the setting, while this is purely about the vibration setting for incoming
2659 * calls.
2660 *
2661 * @hide
2662 */
2663 public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
2664
Svetoslav683914b2015-01-15 14:22:26 -08002665 /** @hide */
2666 public static final Validator VIBRATE_WHEN_RINGING_VALIDATOR = sBooleanValidator;
2667
Daisuke Miyakawa3c60eeb2012-05-08 12:08:25 -07002668 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002669 * Whether the audible DTMF tones are played by the dialer when dialing. The value is
2670 * boolean (1 or 0).
2671 */
2672 public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone";
2673
Svetoslav683914b2015-01-15 14:22:26 -08002674 /** @hide */
2675 public static final Validator DTMF_TONE_WHEN_DIALING_VALIDATOR = sBooleanValidator;
2676
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002677 /**
David Kraused0f67152009-06-13 18:01:13 -05002678 * CDMA only settings
2679 * DTMF tone type played by the dialer when dialing.
2680 * 0 = Normal
2681 * 1 = Long
2682 * @hide
2683 */
2684 public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type";
2685
Svetoslav683914b2015-01-15 14:22:26 -08002686 /** @hide */
2687 public static final Validator DTMF_TONE_TYPE_WHEN_DIALING_VALIDATOR = sBooleanValidator;
2688
David Kraused0f67152009-06-13 18:01:13 -05002689 /**
David Kraused0f67152009-06-13 18:01:13 -05002690 * Whether the hearing aid is enabled. The value is
2691 * boolean (1 or 0).
2692 * @hide
2693 */
2694 public static final String HEARING_AID = "hearing_aid";
2695
Svetoslav683914b2015-01-15 14:22:26 -08002696 /** @hide */
2697 public static final Validator HEARING_AID_VALIDATOR = sBooleanValidator;
2698
David Kraused0f67152009-06-13 18:01:13 -05002699 /**
2700 * CDMA only settings
2701 * TTY Mode
2702 * 0 = OFF
2703 * 1 = FULL
2704 * 2 = VCO
2705 * 3 = HCO
2706 * @hide
2707 */
2708 public static final String TTY_MODE = "tty_mode";
2709
Svetoslav683914b2015-01-15 14:22:26 -08002710 /** @hide */
2711 public static final Validator TTY_MODE_VALIDATOR = new InclusiveIntegerRangeValidator(0, 3);
2712
David Kraused0f67152009-06-13 18:01:13 -05002713 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002714 * Whether the sounds effects (key clicks, lid open ...) are enabled. The value is
2715 * boolean (1 or 0).
2716 */
2717 public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002718
Svetoslav683914b2015-01-15 14:22:26 -08002719 /** @hide */
2720 public static final Validator SOUND_EFFECTS_ENABLED_VALIDATOR = sBooleanValidator;
2721
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002722 /**
2723 * Whether the haptic feedback (long presses, ...) are enabled. The value is
2724 * boolean (1 or 0).
2725 */
2726 public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled";
Sanjay Jeyakumar21bf2412009-07-09 13:31:48 -07002727
Svetoslav683914b2015-01-15 14:22:26 -08002728 /** @hide */
2729 public static final Validator HAPTIC_FEEDBACK_ENABLED_VALIDATOR = sBooleanValidator;
2730
Mike LeBeau48603e72009-06-05 00:27:00 +01002731 /**
Bjorn Bringert24abb662010-09-21 12:21:18 +01002732 * @deprecated Each application that shows web suggestions should have its own
2733 * setting for this.
Mike LeBeau48603e72009-06-05 00:27:00 +01002734 */
Bjorn Bringert24abb662010-09-21 12:21:18 +01002735 @Deprecated
Mike LeBeau48603e72009-06-05 00:27:00 +01002736 public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002737
Svetoslav683914b2015-01-15 14:22:26 -08002738 /** @hide */
2739 public static final Validator SHOW_WEB_SUGGESTIONS_VALIDATOR = sBooleanValidator;
2740
-b master501eec92009-07-06 13:53:11 -07002741 /**
Amith Yamasaniae3ed702009-12-01 19:02:05 -08002742 * Whether the notification LED should repeatedly flash when a notification is
2743 * pending. The value is boolean (1 or 0).
2744 * @hide
2745 */
2746 public static final String NOTIFICATION_LIGHT_PULSE = "notification_light_pulse";
2747
Svetoslav683914b2015-01-15 14:22:26 -08002748 /** @hide */
2749 public static final Validator NOTIFICATION_LIGHT_PULSE_VALIDATOR = sBooleanValidator;
2750
Amith Yamasaniae3ed702009-12-01 19:02:05 -08002751 /**
Dianne Hackborn90d2db32010-02-11 22:19:06 -08002752 * Show pointer location on screen?
2753 * 0 = no
2754 * 1 = yes
2755 * @hide
2756 */
2757 public static final String POINTER_LOCATION = "pointer_location";
2758
Svetoslav683914b2015-01-15 14:22:26 -08002759 /** @hide */
2760 public static final Validator POINTER_LOCATION_VALIDATOR = sBooleanValidator;
2761
Dianne Hackborn90d2db32010-02-11 22:19:06 -08002762 /**
Jeff Browndaf4a122011-08-26 17:14:14 -07002763 * Show touch positions on screen?
2764 * 0 = no
2765 * 1 = yes
2766 * @hide
2767 */
2768 public static final String SHOW_TOUCHES = "show_touches";
2769
Svetoslav683914b2015-01-15 14:22:26 -08002770 /** @hide */
2771 public static final Validator SHOW_TOUCHES_VALIDATOR = sBooleanValidator;
2772
Jeff Browndaf4a122011-08-26 17:14:14 -07002773 /**
Dianne Hackborn16ec0802014-08-15 18:32:33 -07002774 * Log raw orientation data from
Jorim Jaggib10e33f2015-02-04 21:57:40 +01002775 * {@link com.android.server.policy.WindowOrientationListener} for use with the
Jeff Brown4519f072011-01-23 13:16:01 -08002776 * orientationplot.py tool.
2777 * 0 = no
2778 * 1 = yes
2779 * @hide
2780 */
2781 public static final String WINDOW_ORIENTATION_LISTENER_LOG =
2782 "window_orientation_listener_log";
2783
Svetoslav683914b2015-01-15 14:22:26 -08002784 /** @hide */
2785 public static final Validator WINDOW_ORIENTATION_LISTENER_LOG_VALIDATOR = sBooleanValidator;
2786
Jeff Brown4519f072011-01-23 13:16:01 -08002787 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002788 * @deprecated Use {@link android.provider.Settings.Global#POWER_SOUNDS_ENABLED}
2789 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002790 * @hide
2791 */
Christopher Tate06efb532012-08-24 15:29:27 -07002792 @Deprecated
2793 public static final String POWER_SOUNDS_ENABLED = Global.POWER_SOUNDS_ENABLED;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002794
2795 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002796 * @deprecated Use {@link android.provider.Settings.Global#DOCK_SOUNDS_ENABLED}
2797 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002798 * @hide
2799 */
Christopher Tate06efb532012-08-24 15:29:27 -07002800 @Deprecated
2801 public static final String DOCK_SOUNDS_ENABLED = Global.DOCK_SOUNDS_ENABLED;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002802
2803 /**
2804 * Whether to play sounds when the keyguard is shown and dismissed.
2805 * @hide
2806 */
2807 public static final String LOCKSCREEN_SOUNDS_ENABLED = "lockscreen_sounds_enabled";
2808
Svetoslav683914b2015-01-15 14:22:26 -08002809 /** @hide */
2810 public static final Validator LOCKSCREEN_SOUNDS_ENABLED_VALIDATOR = sBooleanValidator;
2811
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002812 /**
Mike Lockwood7bef7392011-10-20 16:51:53 -04002813 * Whether the lockscreen should be completely disabled.
2814 * @hide
2815 */
2816 public static final String LOCKSCREEN_DISABLED = "lockscreen.disabled";
2817
Svetoslav683914b2015-01-15 14:22:26 -08002818 /** @hide */
2819 public static final Validator LOCKSCREEN_DISABLED_VALIDATOR = sBooleanValidator;
2820
Mike Lockwood7bef7392011-10-20 16:51:53 -04002821 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002822 * @deprecated Use {@link android.provider.Settings.Global#LOW_BATTERY_SOUND}
2823 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002824 * @hide
2825 */
Christopher Tate06efb532012-08-24 15:29:27 -07002826 @Deprecated
2827 public static final String LOW_BATTERY_SOUND = Global.LOW_BATTERY_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002828
2829 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002830 * @deprecated Use {@link android.provider.Settings.Global#DESK_DOCK_SOUND}
2831 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002832 * @hide
2833 */
Christopher Tate06efb532012-08-24 15:29:27 -07002834 @Deprecated
2835 public static final String DESK_DOCK_SOUND = Global.DESK_DOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002836
2837 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002838 * @deprecated Use {@link android.provider.Settings.Global#DESK_UNDOCK_SOUND}
2839 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002840 * @hide
2841 */
Christopher Tate06efb532012-08-24 15:29:27 -07002842 @Deprecated
2843 public static final String DESK_UNDOCK_SOUND = Global.DESK_UNDOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002844
2845 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002846 * @deprecated Use {@link android.provider.Settings.Global#CAR_DOCK_SOUND}
2847 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002848 * @hide
2849 */
Christopher Tate06efb532012-08-24 15:29:27 -07002850 @Deprecated
2851 public static final String CAR_DOCK_SOUND = Global.CAR_DOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002852
2853 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002854 * @deprecated Use {@link android.provider.Settings.Global#CAR_UNDOCK_SOUND}
2855 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002856 * @hide
2857 */
Christopher Tate06efb532012-08-24 15:29:27 -07002858 @Deprecated
2859 public static final String CAR_UNDOCK_SOUND = Global.CAR_UNDOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002860
2861 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002862 * @deprecated Use {@link android.provider.Settings.Global#LOCK_SOUND}
2863 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002864 * @hide
2865 */
Christopher Tate06efb532012-08-24 15:29:27 -07002866 @Deprecated
2867 public static final String LOCK_SOUND = Global.LOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002868
2869 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002870 * @deprecated Use {@link android.provider.Settings.Global#UNLOCK_SOUND}
2871 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002872 * @hide
2873 */
Christopher Tate06efb532012-08-24 15:29:27 -07002874 @Deprecated
2875 public static final String UNLOCK_SOUND = Global.UNLOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002876
2877 /**
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002878 * Receive incoming SIP calls?
2879 * 0 = no
2880 * 1 = yes
2881 * @hide
2882 */
2883 public static final String SIP_RECEIVE_CALLS = "sip_receive_calls";
2884
Svetoslav683914b2015-01-15 14:22:26 -08002885 /** @hide */
2886 public static final Validator SIP_RECEIVE_CALLS_VALIDATOR = sBooleanValidator;
2887
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002888 /**
2889 * Call Preference String.
2890 * "SIP_ALWAYS" : Always use SIP with network access
2891 * "SIP_ADDRESS_ONLY" : Only if destination is a SIP address
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002892 * @hide
2893 */
2894 public static final String SIP_CALL_OPTIONS = "sip_call_options";
2895
Svetoslav683914b2015-01-15 14:22:26 -08002896 /** @hide */
2897 public static final Validator SIP_CALL_OPTIONS_VALIDATOR = new DiscreteValueValidator(
2898 new String[] {"SIP_ALWAYS", "SIP_ADDRESS_ONLY"});
2899
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002900 /**
2901 * One of the sip call options: Always use SIP with network access.
2902 * @hide
2903 */
2904 public static final String SIP_ALWAYS = "SIP_ALWAYS";
2905
Svetoslav683914b2015-01-15 14:22:26 -08002906 /** @hide */
2907 public static final Validator SIP_ALWAYS_VALIDATOR = sBooleanValidator;
2908
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002909 /**
2910 * One of the sip call options: Only if destination is a SIP address.
2911 * @hide
2912 */
2913 public static final String SIP_ADDRESS_ONLY = "SIP_ADDRESS_ONLY";
2914
Svetoslav683914b2015-01-15 14:22:26 -08002915 /** @hide */
2916 public static final Validator SIP_ADDRESS_ONLY_VALIDATOR = sBooleanValidator;
2917
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002918 /**
Tyler Gunn2c830a22014-09-02 08:39:35 -07002919 * @deprecated Use SIP_ALWAYS or SIP_ADDRESS_ONLY instead. Formerly used to indicate that
2920 * the user should be prompted each time a call is made whether it should be placed using
2921 * SIP. The {@link com.android.providers.settings.DatabaseHelper} replaces this with
2922 * SIP_ADDRESS_ONLY.
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002923 * @hide
2924 */
Tyler Gunn2c830a22014-09-02 08:39:35 -07002925 @Deprecated
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002926 public static final String SIP_ASK_ME_EACH_TIME = "SIP_ASK_ME_EACH_TIME";
2927
Svetoslav683914b2015-01-15 14:22:26 -08002928 /** @hide */
2929 public static final Validator SIP_ASK_ME_EACH_TIME_VALIDATOR = sBooleanValidator;
2930
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002931 /**
Jeff Brown1a84fd12011-06-02 01:26:32 -07002932 * Pointer speed setting.
2933 * This is an integer value in a range between -7 and +7, so there are 15 possible values.
2934 * -7 = slowest
2935 * 0 = default speed
2936 * +7 = fastest
2937 * @hide
2938 */
2939 public static final String POINTER_SPEED = "pointer_speed";
2940
Svetoslav683914b2015-01-15 14:22:26 -08002941 /** @hide */
2942 public static final Validator POINTER_SPEED_VALIDATOR =
2943 new InclusiveFloatRangeValidator(-7, 7);
2944
Jeff Brown1a84fd12011-06-02 01:26:32 -07002945 /**
Jason Monk56e09b42014-07-18 10:29:14 -04002946 * Whether lock-to-app will be triggered by long-press on recents.
2947 * @hide
2948 */
2949 public static final String LOCK_TO_APP_ENABLED = "lock_to_app_enabled";
2950
Svetoslav683914b2015-01-15 14:22:26 -08002951 /** @hide */
2952 public static final Validator LOCK_TO_APP_ENABLED_VALIDATOR = sBooleanValidator;
2953
Jason Monk56e09b42014-07-18 10:29:14 -04002954 /**
Daniel Sandler2fdb68b2013-10-03 00:12:11 -04002955 * I am the lolrus.
2956 * <p>
2957 * Nonzero values indicate that the user has a bukkit.
2958 * Backward-compatible with <code>PrefGetPreference(prefAllowEasterEggs)</code>.
2959 * @hide
2960 */
2961 public static final String EGG_MODE = "egg_mode";
2962
Svetoslav683914b2015-01-15 14:22:26 -08002963 /** @hide */
2964 public static final Validator EGG_MODE_VALIDATOR = sBooleanValidator;
2965
2966 /**
2967 * IMPORTANT: If you add a new public settings you also have to add it to
2968 * PUBLIC_SETTINGS below. If the new setting is hidden you have to add
2969 * it to PRIVATE_SETTINGS below. Also add a validator that can validate
2970 * the setting value. See an example above.
2971 */
2972
Daniel Sandler2fdb68b2013-10-03 00:12:11 -04002973 /**
-b master501eec92009-07-06 13:53:11 -07002974 * Settings to backup. This is here so that it's in the same place as the settings
2975 * keys and easy to update.
Svetoslav Ganova571a582011-09-20 18:32:20 -07002976 *
2977 * NOTE: Settings are backed up and restored in the order they appear
2978 * in this array. If you have one setting depending on another,
2979 * make sure that they are ordered appropriately.
2980 *
-b master501eec92009-07-06 13:53:11 -07002981 * @hide
2982 */
2983 public static final String[] SETTINGS_TO_BACKUP = {
Christopher Tate66488d62012-10-02 11:58:01 -07002984 STAY_ON_WHILE_PLUGGED_IN, // moved to global
-b master501eec92009-07-06 13:53:11 -07002985 WIFI_USE_STATIC_IP,
2986 WIFI_STATIC_IP,
2987 WIFI_STATIC_GATEWAY,
2988 WIFI_STATIC_NETMASK,
2989 WIFI_STATIC_DNS1,
2990 WIFI_STATIC_DNS2,
2991 BLUETOOTH_DISCOVERABILITY,
2992 BLUETOOTH_DISCOVERABILITY_TIMEOUT,
2993 DIM_SCREEN,
2994 SCREEN_OFF_TIMEOUT,
2995 SCREEN_BRIGHTNESS,
Christopher Tate362aca62009-09-25 15:58:03 -07002996 SCREEN_BRIGHTNESS_MODE,
Dianne Hackbornd9ea4682012-01-20 18:36:40 -08002997 SCREEN_AUTO_BRIGHTNESS_ADJ,
Jeff Brown7f6c2312012-04-13 20:38:38 -07002998 VIBRATE_INPUT_DEVICES,
Amith Yamasani8823c0a82009-07-07 14:30:17 -07002999 MODE_RINGER_STREAMS_AFFECTED,
-b master501eec92009-07-06 13:53:11 -07003000 TEXT_AUTO_REPLACE,
3001 TEXT_AUTO_CAPS,
3002 TEXT_AUTO_PUNCTUATE,
3003 TEXT_SHOW_PASSWORD,
Christopher Tate66488d62012-10-02 11:58:01 -07003004 AUTO_TIME, // moved to global
3005 AUTO_TIME_ZONE, // moved to global
-b master501eec92009-07-06 13:53:11 -07003006 TIME_12_24,
3007 DATE_FORMAT,
-b master501eec92009-07-06 13:53:11 -07003008 DTMF_TONE_WHEN_DIALING,
3009 DTMF_TONE_TYPE_WHEN_DIALING,
-b master501eec92009-07-06 13:53:11 -07003010 HEARING_AID,
3011 TTY_MODE,
3012 SOUND_EFFECTS_ENABLED,
3013 HAPTIC_FEEDBACK_ENABLED,
Christopher Tate66488d62012-10-02 11:58:01 -07003014 POWER_SOUNDS_ENABLED, // moved to global
3015 DOCK_SOUNDS_ENABLED, // moved to global
Christopher Tate14c2d792010-02-25 16:49:44 -08003016 LOCKSCREEN_SOUNDS_ENABLED,
Amith Yamasaniae3ed702009-12-01 19:02:05 -08003017 SHOW_WEB_SUGGESTIONS,
Mike Lockwoodeabe8bf2010-08-31 14:35:23 -04003018 NOTIFICATION_LIGHT_PULSE,
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08003019 SIP_CALL_OPTIONS,
Nick Pelly038cabe2010-09-23 16:12:11 -07003020 SIP_RECEIVE_CALLS,
Jeff Brown1a84fd12011-06-02 01:26:32 -07003021 POINTER_SPEED,
Amith Yamasani622bf2222013-09-06 13:54:28 -07003022 VIBRATE_WHEN_RINGING,
3023 RINGTONE,
Jason Monk94cfd9d2014-10-31 13:18:21 -04003024 LOCK_TO_APP_ENABLED,
Amith Yamasani622bf2222013-09-06 13:54:28 -07003025 NOTIFICATION_SOUND
-b master501eec92009-07-06 13:53:11 -07003026 };
3027
Sailesh Nepal1bd78762014-02-11 22:32:21 -08003028 /**
Svetoslav683914b2015-01-15 14:22:26 -08003029 * These are all pulbic system settings
3030 *
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07003031 * @hide
3032 */
Svetoslav683914b2015-01-15 14:22:26 -08003033 public static final Set<String> PUBLIC_SETTINGS = new ArraySet<>();
3034 static {
3035 PUBLIC_SETTINGS.add(END_BUTTON_BEHAVIOR);
3036 PUBLIC_SETTINGS.add(WIFI_USE_STATIC_IP);
3037 PUBLIC_SETTINGS.add(WIFI_STATIC_IP);
3038 PUBLIC_SETTINGS.add(WIFI_STATIC_GATEWAY);
3039 PUBLIC_SETTINGS.add(WIFI_STATIC_NETMASK);
3040 PUBLIC_SETTINGS.add(WIFI_STATIC_DNS1);
3041 PUBLIC_SETTINGS.add(WIFI_STATIC_DNS2);
3042 PUBLIC_SETTINGS.add(BLUETOOTH_DISCOVERABILITY);
3043 PUBLIC_SETTINGS.add(BLUETOOTH_DISCOVERABILITY_TIMEOUT);
3044 PUBLIC_SETTINGS.add(NEXT_ALARM_FORMATTED);
3045 PUBLIC_SETTINGS.add(FONT_SCALE);
3046 PUBLIC_SETTINGS.add(DIM_SCREEN);
3047 PUBLIC_SETTINGS.add(SCREEN_OFF_TIMEOUT);
3048 PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS);
3049 PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS_MODE);
3050 PUBLIC_SETTINGS.add(MODE_RINGER_STREAMS_AFFECTED);
3051 PUBLIC_SETTINGS.add(MUTE_STREAMS_AFFECTED);
3052 PUBLIC_SETTINGS.add(VIBRATE_ON);
3053 PUBLIC_SETTINGS.add(VOLUME_RING);
3054 PUBLIC_SETTINGS.add(VOLUME_SYSTEM);
3055 PUBLIC_SETTINGS.add(VOLUME_VOICE);
3056 PUBLIC_SETTINGS.add(VOLUME_MUSIC);
3057 PUBLIC_SETTINGS.add(VOLUME_ALARM);
3058 PUBLIC_SETTINGS.add(VOLUME_NOTIFICATION);
3059 PUBLIC_SETTINGS.add(VOLUME_BLUETOOTH_SCO);
3060 PUBLIC_SETTINGS.add(RINGTONE);
3061 PUBLIC_SETTINGS.add(NOTIFICATION_SOUND);
3062 PUBLIC_SETTINGS.add(ALARM_ALERT);
3063 PUBLIC_SETTINGS.add(TEXT_AUTO_REPLACE);
3064 PUBLIC_SETTINGS.add(TEXT_AUTO_CAPS);
3065 PUBLIC_SETTINGS.add(TEXT_AUTO_PUNCTUATE);
3066 PUBLIC_SETTINGS.add(TEXT_SHOW_PASSWORD);
3067 PUBLIC_SETTINGS.add(SHOW_GTALK_SERVICE_STATUS);
3068 PUBLIC_SETTINGS.add(WALLPAPER_ACTIVITY);
3069 PUBLIC_SETTINGS.add(TIME_12_24);
3070 PUBLIC_SETTINGS.add(DATE_FORMAT);
3071 PUBLIC_SETTINGS.add(SETUP_WIZARD_HAS_RUN);
3072 PUBLIC_SETTINGS.add(ACCELEROMETER_ROTATION);
3073 PUBLIC_SETTINGS.add(USER_ROTATION);
3074 PUBLIC_SETTINGS.add(DTMF_TONE_WHEN_DIALING);
3075 PUBLIC_SETTINGS.add(SOUND_EFFECTS_ENABLED);
3076 PUBLIC_SETTINGS.add(HAPTIC_FEEDBACK_ENABLED);
3077 PUBLIC_SETTINGS.add(SHOW_WEB_SUGGESTIONS);
3078 }
3079
3080 /**
3081 * These are all hidden system settings.
3082 *
3083 * @hide
3084 */
3085 public static final Set<String> PRIVATE_SETTINGS = new ArraySet<>();
3086 static {
3087 PRIVATE_SETTINGS.add(WIFI_USE_STATIC_IP);
3088 PRIVATE_SETTINGS.add(END_BUTTON_BEHAVIOR);
3089 PRIVATE_SETTINGS.add(ADVANCED_SETTINGS);
3090 PRIVATE_SETTINGS.add(SCREEN_AUTO_BRIGHTNESS_ADJ);
3091 PRIVATE_SETTINGS.add(VIBRATE_INPUT_DEVICES);
3092 PRIVATE_SETTINGS.add(VOLUME_MASTER);
3093 PRIVATE_SETTINGS.add(VOLUME_MASTER_MUTE);
3094 PRIVATE_SETTINGS.add(MICROPHONE_MUTE);
3095 PRIVATE_SETTINGS.add(NOTIFICATIONS_USE_RING_VOLUME);
3096 PRIVATE_SETTINGS.add(VIBRATE_IN_SILENT);
3097 PRIVATE_SETTINGS.add(MEDIA_BUTTON_RECEIVER);
3098 PRIVATE_SETTINGS.add(HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY);
3099 PRIVATE_SETTINGS.add(VIBRATE_WHEN_RINGING);
3100 PRIVATE_SETTINGS.add(DTMF_TONE_TYPE_WHEN_DIALING);
3101 PRIVATE_SETTINGS.add(HEARING_AID);
3102 PRIVATE_SETTINGS.add(TTY_MODE);
3103 PRIVATE_SETTINGS.add(NOTIFICATION_LIGHT_PULSE);
3104 PRIVATE_SETTINGS.add(POINTER_LOCATION);
3105 PRIVATE_SETTINGS.add(SHOW_TOUCHES);
3106 PRIVATE_SETTINGS.add(WINDOW_ORIENTATION_LISTENER_LOG);
3107 PRIVATE_SETTINGS.add(POWER_SOUNDS_ENABLED);
3108 PRIVATE_SETTINGS.add(DOCK_SOUNDS_ENABLED);
3109 PRIVATE_SETTINGS.add(LOCKSCREEN_SOUNDS_ENABLED);
3110 PRIVATE_SETTINGS.add(LOCKSCREEN_DISABLED);
3111 PRIVATE_SETTINGS.add(LOW_BATTERY_SOUND);
3112 PRIVATE_SETTINGS.add(DESK_DOCK_SOUND);
3113 PRIVATE_SETTINGS.add(DESK_UNDOCK_SOUND);
3114 PRIVATE_SETTINGS.add(CAR_DOCK_SOUND);
3115 PRIVATE_SETTINGS.add(CAR_UNDOCK_SOUND);
3116 PRIVATE_SETTINGS.add(LOCK_SOUND);
3117 PRIVATE_SETTINGS.add(UNLOCK_SOUND);
3118 PRIVATE_SETTINGS.add(SIP_RECEIVE_CALLS);
3119 PRIVATE_SETTINGS.add(SIP_CALL_OPTIONS);
3120 PRIVATE_SETTINGS.add(SIP_ALWAYS);
3121 PRIVATE_SETTINGS.add(SIP_ADDRESS_ONLY);
3122 PRIVATE_SETTINGS.add(SIP_ASK_ME_EACH_TIME);
3123 PRIVATE_SETTINGS.add(POINTER_SPEED);
3124 PRIVATE_SETTINGS.add(LOCK_TO_APP_ENABLED);
3125 PRIVATE_SETTINGS.add(EGG_MODE);
3126 }
3127
3128 /**
3129 * These are all pulbic system settings
3130 *
3131 * @hide
3132 */
3133 public static final Map<String, Validator> VALIDATORS = new ArrayMap<>();
3134 static {
3135 VALIDATORS.put(END_BUTTON_BEHAVIOR,END_BUTTON_BEHAVIOR_VALIDATOR);
3136 VALIDATORS.put(WIFI_USE_STATIC_IP, WIFI_USE_STATIC_IP_VALIDATOR);
3137 VALIDATORS.put(BLUETOOTH_DISCOVERABILITY, BLUETOOTH_DISCOVERABILITY_VALIDATOR);
3138 VALIDATORS.put(BLUETOOTH_DISCOVERABILITY_TIMEOUT,
3139 BLUETOOTH_DISCOVERABILITY_TIMEOUT_VALIDATOR);
3140 VALIDATORS.put(NEXT_ALARM_FORMATTED, NEXT_ALARM_FORMATTED_VALIDATOR);
3141 VALIDATORS.put(FONT_SCALE, FONT_SCALE_VALIDATOR);
3142 VALIDATORS.put(DIM_SCREEN, DIM_SCREEN_VALIDATOR);
3143 VALIDATORS.put(SCREEN_OFF_TIMEOUT, SCREEN_OFF_TIMEOUT_VALIDATOR);
3144 VALIDATORS.put(SCREEN_BRIGHTNESS, SCREEN_BRIGHTNESS_VALIDATOR);
3145 VALIDATORS.put(SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_VALIDATOR);
3146 VALIDATORS.put(MODE_RINGER_STREAMS_AFFECTED, MODE_RINGER_STREAMS_AFFECTED_VALIDATOR);
3147 VALIDATORS.put(MUTE_STREAMS_AFFECTED, MUTE_STREAMS_AFFECTED_VALIDATOR);
3148 VALIDATORS.put(VIBRATE_ON, VIBRATE_ON_VALIDATOR);
Svetoslav683914b2015-01-15 14:22:26 -08003149 VALIDATORS.put(RINGTONE, RINGTONE_VALIDATOR);
3150 VALIDATORS.put(NOTIFICATION_SOUND, NOTIFICATION_SOUND_VALIDATOR);
3151 VALIDATORS.put(ALARM_ALERT, ALARM_ALERT_VALIDATOR);
3152 VALIDATORS.put(TEXT_AUTO_REPLACE, TEXT_AUTO_REPLACE_VALIDATOR);
3153 VALIDATORS.put(TEXT_AUTO_CAPS, TEXT_AUTO_CAPS_VALIDATOR);
3154 VALIDATORS.put(TEXT_AUTO_PUNCTUATE, TEXT_AUTO_PUNCTUATE_VALIDATOR);
3155 VALIDATORS.put(TEXT_SHOW_PASSWORD, TEXT_SHOW_PASSWORD_VALIDATOR);
3156 VALIDATORS.put(SHOW_GTALK_SERVICE_STATUS, SHOW_GTALK_SERVICE_STATUS_VALIDATOR);
3157 VALIDATORS.put(WALLPAPER_ACTIVITY, WALLPAPER_ACTIVITY_VALIDATOR);
3158 VALIDATORS.put(TIME_12_24, TIME_12_24_VALIDATOR);
3159 VALIDATORS.put(DATE_FORMAT, DATE_FORMAT_VALIDATOR);
3160 VALIDATORS.put(SETUP_WIZARD_HAS_RUN, SETUP_WIZARD_HAS_RUN_VALIDATOR);
3161 VALIDATORS.put(ACCELEROMETER_ROTATION, ACCELEROMETER_ROTATION_VALIDATOR);
3162 VALIDATORS.put(USER_ROTATION, USER_ROTATION_VALIDATOR);
3163 VALIDATORS.put(DTMF_TONE_WHEN_DIALING, DTMF_TONE_WHEN_DIALING_VALIDATOR);
3164 VALIDATORS.put(SOUND_EFFECTS_ENABLED, SOUND_EFFECTS_ENABLED_VALIDATOR);
3165 VALIDATORS.put(HAPTIC_FEEDBACK_ENABLED, HAPTIC_FEEDBACK_ENABLED_VALIDATOR);
3166 VALIDATORS.put(SHOW_WEB_SUGGESTIONS, SHOW_WEB_SUGGESTIONS_VALIDATOR);
3167 VALIDATORS.put(WIFI_USE_STATIC_IP, WIFI_USE_STATIC_IP_VALIDATOR);
3168 VALIDATORS.put(END_BUTTON_BEHAVIOR, END_BUTTON_BEHAVIOR_VALIDATOR);
3169 VALIDATORS.put(ADVANCED_SETTINGS, ADVANCED_SETTINGS_VALIDATOR);
3170 VALIDATORS.put(SCREEN_AUTO_BRIGHTNESS_ADJ, SCREEN_AUTO_BRIGHTNESS_ADJ_VALIDATOR);
3171 VALIDATORS.put(VIBRATE_INPUT_DEVICES, VIBRATE_INPUT_DEVICES_VALIDATOR);
Svetoslav683914b2015-01-15 14:22:26 -08003172 VALIDATORS.put(VOLUME_MASTER_MUTE, VOLUME_MASTER_MUTE_VALIDATOR);
3173 VALIDATORS.put(MICROPHONE_MUTE, MICROPHONE_MUTE_VALIDATOR);
3174 VALIDATORS.put(NOTIFICATIONS_USE_RING_VOLUME, NOTIFICATIONS_USE_RING_VOLUME_VALIDATOR);
3175 VALIDATORS.put(VIBRATE_IN_SILENT, VIBRATE_IN_SILENT_VALIDATOR);
3176 VALIDATORS.put(MEDIA_BUTTON_RECEIVER, MEDIA_BUTTON_RECEIVER_VALIDATOR);
3177 VALIDATORS.put(HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY,
3178 HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY_VALIDATOR);
3179 VALIDATORS.put(VIBRATE_WHEN_RINGING, VIBRATE_WHEN_RINGING_VALIDATOR);
3180 VALIDATORS.put(DTMF_TONE_TYPE_WHEN_DIALING, DTMF_TONE_TYPE_WHEN_DIALING_VALIDATOR);
3181 VALIDATORS.put(HEARING_AID, HEARING_AID_VALIDATOR);
3182 VALIDATORS.put(TTY_MODE, TTY_MODE_VALIDATOR);
3183 VALIDATORS.put(NOTIFICATION_LIGHT_PULSE, NOTIFICATION_LIGHT_PULSE_VALIDATOR);
3184 VALIDATORS.put(POINTER_LOCATION, POINTER_LOCATION_VALIDATOR);
3185 VALIDATORS.put(SHOW_TOUCHES, SHOW_TOUCHES_VALIDATOR);
3186 VALIDATORS.put(WINDOW_ORIENTATION_LISTENER_LOG,
3187 WINDOW_ORIENTATION_LISTENER_LOG_VALIDATOR);
3188 VALIDATORS.put(LOCKSCREEN_SOUNDS_ENABLED, LOCKSCREEN_SOUNDS_ENABLED_VALIDATOR);
3189 VALIDATORS.put(LOCKSCREEN_DISABLED, LOCKSCREEN_DISABLED_VALIDATOR);
3190 VALIDATORS.put(SIP_RECEIVE_CALLS, SIP_RECEIVE_CALLS_VALIDATOR);
3191 VALIDATORS.put(SIP_CALL_OPTIONS, SIP_CALL_OPTIONS_VALIDATOR);
3192 VALIDATORS.put(SIP_ALWAYS, SIP_ALWAYS_VALIDATOR);
3193 VALIDATORS.put(SIP_ADDRESS_ONLY, SIP_ADDRESS_ONLY_VALIDATOR);
3194 VALIDATORS.put(SIP_ASK_ME_EACH_TIME, SIP_ASK_ME_EACH_TIME_VALIDATOR);
3195 VALIDATORS.put(POINTER_SPEED, POINTER_SPEED_VALIDATOR);
3196 VALIDATORS.put(LOCK_TO_APP_ENABLED, LOCK_TO_APP_ENABLED_VALIDATOR);
3197 VALIDATORS.put(EGG_MODE, EGG_MODE_VALIDATOR);
3198 VALIDATORS.put(WIFI_STATIC_IP, WIFI_STATIC_IP_VALIDATOR);
3199 VALIDATORS.put(WIFI_STATIC_GATEWAY, WIFI_STATIC_GATEWAY_VALIDATOR);
3200 VALIDATORS.put(WIFI_STATIC_NETMASK, WIFI_STATIC_NETMASK_VALIDATOR);
3201 VALIDATORS.put(WIFI_STATIC_DNS1, WIFI_STATIC_DNS1_VALIDATOR);
3202 VALIDATORS.put(WIFI_STATIC_DNS2, WIFI_STATIC_DNS2_VALIDATOR);
3203 }
3204
3205 /**
3206 * These entries are considered common between the personal and the managed profile,
3207 * since the managed profile doesn't get to change them.
3208 */
3209 private static final Set<String> CLONE_TO_MANAGED_PROFILE = new ArraySet<>();
3210 static {
3211 CLONE_TO_MANAGED_PROFILE.add(DATE_FORMAT);
3212 CLONE_TO_MANAGED_PROFILE.add(HAPTIC_FEEDBACK_ENABLED);
3213 CLONE_TO_MANAGED_PROFILE.add(SOUND_EFFECTS_ENABLED);
3214 CLONE_TO_MANAGED_PROFILE.add(TEXT_SHOW_PASSWORD);
3215 CLONE_TO_MANAGED_PROFILE.add(TIME_12_24);
3216 }
3217
3218 /** @hide */
3219 public static void getCloneToManagedProfileSettings(Set<String> outKeySet) {
3220 outKeySet.addAll(CLONE_TO_MANAGED_PROFILE);
3221 }
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07003222
3223 /**
Sailesh Nepal1bd78762014-02-11 22:32:21 -08003224 * When to use Wi-Fi calling
3225 *
3226 * @see android.telephony.TelephonyManager.WifiCallingChoices
3227 * @hide
3228 */
3229 public static final String WHEN_TO_MAKE_WIFI_CALLS = "when_to_make_wifi_calls";
3230
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003231 // Settings moved to Settings.Secure
3232
3233 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003234 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED}
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003235 * instead
3236 */
3237 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003238 public static final String ADB_ENABLED = Global.ADB_ENABLED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003239
3240 /**
3241 * @deprecated Use {@link android.provider.Settings.Secure#ANDROID_ID} instead
3242 */
3243 @Deprecated
3244 public static final String ANDROID_ID = Secure.ANDROID_ID;
3245
3246 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003247 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003248 */
3249 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003250 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003251
3252 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003253 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003254 */
3255 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003256 public static final String DATA_ROAMING = Global.DATA_ROAMING;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003257
3258 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003259 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003260 */
3261 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003262 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003263
3264 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07003265 * @deprecated Use {@link android.provider.Settings.Global#HTTP_PROXY} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003266 */
3267 @Deprecated
Jeff Sharkey625239a2012-09-26 22:03:49 -07003268 public static final String HTTP_PROXY = Global.HTTP_PROXY;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003269
3270 /**
Christopher Tateaa036a22014-05-19 16:33:27 -07003271 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003272 */
3273 @Deprecated
Christopher Tateaa036a22014-05-19 16:33:27 -07003274 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003275
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003276 /**
3277 * @deprecated Use {@link android.provider.Settings.Secure#LOCATION_PROVIDERS_ALLOWED}
3278 * instead
3279 */
3280 @Deprecated
3281 public static final String LOCATION_PROVIDERS_ALLOWED = Secure.LOCATION_PROVIDERS_ALLOWED;
3282
3283 /**
3284 * @deprecated Use {@link android.provider.Settings.Secure#LOGGING_ID} instead
3285 */
3286 @Deprecated
3287 public static final String LOGGING_ID = Secure.LOGGING_ID;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003288
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003289 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003290 * @deprecated Use {@link android.provider.Settings.Global#NETWORK_PREFERENCE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003291 */
3292 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003293 public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003294
3295 /**
3296 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_ENABLED}
3297 * instead
3298 */
3299 @Deprecated
3300 public static final String PARENTAL_CONTROL_ENABLED = Secure.PARENTAL_CONTROL_ENABLED;
3301
3302 /**
3303 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_LAST_UPDATE}
3304 * instead
3305 */
3306 @Deprecated
3307 public static final String PARENTAL_CONTROL_LAST_UPDATE = Secure.PARENTAL_CONTROL_LAST_UPDATE;
3308
3309 /**
3310 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_REDIRECT_URL}
3311 * instead
3312 */
3313 @Deprecated
3314 public static final String PARENTAL_CONTROL_REDIRECT_URL =
3315 Secure.PARENTAL_CONTROL_REDIRECT_URL;
3316
3317 /**
3318 * @deprecated Use {@link android.provider.Settings.Secure#SETTINGS_CLASSNAME} instead
3319 */
3320 @Deprecated
3321 public static final String SETTINGS_CLASSNAME = Secure.SETTINGS_CLASSNAME;
3322
3323 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003324 * @deprecated Use {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003325 */
3326 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003327 public static final String USB_MASS_STORAGE_ENABLED = Global.USB_MASS_STORAGE_ENABLED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003328
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003329 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003330 * @deprecated Use {@link android.provider.Settings.Global#USE_GOOGLE_MAIL} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003331 */
3332 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003333 public static final String USE_GOOGLE_MAIL = Global.USE_GOOGLE_MAIL;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003334
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003335 /**
3336 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003337 * {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003338 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003339 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003340 public static final String WIFI_MAX_DHCP_RETRY_COUNT = Global.WIFI_MAX_DHCP_RETRY_COUNT;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003341
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003342 /**
3343 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003344 * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003345 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003346 @Deprecated
3347 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
Christopher Tate06efb532012-08-24 15:29:27 -07003348 Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003349
3350 /**
3351 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003352 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003353 */
3354 @Deprecated
3355 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
Christopher Tate06efb532012-08-24 15:29:27 -07003356 Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003357
3358 /**
3359 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003360 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003361 */
3362 @Deprecated
3363 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY =
Christopher Tate06efb532012-08-24 15:29:27 -07003364 Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003365
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003366 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003367 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT}
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003368 * instead
3369 */
3370 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003371 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = Global.WIFI_NUM_OPEN_NETWORKS_KEPT;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003372
3373 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003374 * @deprecated Use {@link android.provider.Settings.Global#WIFI_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003375 */
3376 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003377 public static final String WIFI_ON = Global.WIFI_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003378
3379 /**
3380 * @deprecated Use
3381 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE}
3382 * instead
3383 */
3384 @Deprecated
3385 public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE =
3386 Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE;
3387
3388 /**
3389 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_AP_COUNT} instead
3390 */
3391 @Deprecated
3392 public static final String WIFI_WATCHDOG_AP_COUNT = Secure.WIFI_WATCHDOG_AP_COUNT;
3393
3394 /**
3395 * @deprecated Use
3396 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS} instead
3397 */
3398 @Deprecated
3399 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS =
3400 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003401
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003402 /**
3403 * @deprecated Use
3404 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED} instead
3405 */
3406 @Deprecated
3407 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED =
3408 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED;
3409
3410 /**
3411 * @deprecated Use
3412 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS}
3413 * instead
3414 */
3415 @Deprecated
3416 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS =
3417 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS;
3418
3419 /**
3420 * @deprecated Use
3421 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT} instead
3422 */
3423 @Deprecated
3424 public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT =
3425 Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT;
3426
3427 /**
3428 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_MAX_AP_CHECKS}
3429 * instead
3430 */
3431 @Deprecated
3432 public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = Secure.WIFI_WATCHDOG_MAX_AP_CHECKS;
3433
3434 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003435 * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003436 */
3437 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003438 public static final String WIFI_WATCHDOG_ON = Global.WIFI_WATCHDOG_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003439
3440 /**
3441 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_COUNT} instead
3442 */
3443 @Deprecated
3444 public static final String WIFI_WATCHDOG_PING_COUNT = Secure.WIFI_WATCHDOG_PING_COUNT;
3445
3446 /**
3447 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_DELAY_MS}
3448 * instead
3449 */
3450 @Deprecated
3451 public static final String WIFI_WATCHDOG_PING_DELAY_MS = Secure.WIFI_WATCHDOG_PING_DELAY_MS;
3452
3453 /**
3454 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_TIMEOUT_MS}
3455 * instead
3456 */
3457 @Deprecated
3458 public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS =
3459 Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS;
3460 }
3461
3462 /**
3463 * Secure system settings, containing system preferences that applications
3464 * can read but are not allowed to write. These are for preferences that
3465 * the user must explicitly modify through the system UI or specialized
3466 * APIs for those values, not modified directly by applications.
3467 */
3468 public static final class Secure extends NameValueTable {
3469 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version";
3470
Dianne Hackborn139748f2012-09-24 11:36:57 -07003471 /**
3472 * The content:// style URL for this table
3473 */
3474 public static final Uri CONTENT_URI =
3475 Uri.parse("content://" + AUTHORITY + "/secure");
3476
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08003477 // Populated lazily, guarded by class object:
Dianne Hackborn139748f2012-09-24 11:36:57 -07003478 private static final NameValueCache sNameValueCache = new NameValueCache(
3479 SYS_PROP_SETTING_VERSION,
3480 CONTENT_URI,
3481 CALL_METHOD_GET_SECURE,
3482 CALL_METHOD_PUT_SECURE);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003483
Amith Yamasani52c489c2012-03-28 11:42:42 -07003484 private static ILockSettings sLockSettings = null;
3485
Amith Yamasani7ab8c4a2012-04-06 09:27:12 -07003486 private static boolean sIsSystemProcess;
Amith Yamasani52c489c2012-03-28 11:42:42 -07003487 private static final HashSet<String> MOVED_TO_LOCK_SETTINGS;
Christopher Tate06efb532012-08-24 15:29:27 -07003488 private static final HashSet<String> MOVED_TO_GLOBAL;
Amith Yamasani52c489c2012-03-28 11:42:42 -07003489 static {
3490 MOVED_TO_LOCK_SETTINGS = new HashSet<String>(3);
3491 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_ENABLED);
3492 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_VISIBLE);
3493 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED);
Christopher Tate06efb532012-08-24 15:29:27 -07003494
3495 MOVED_TO_GLOBAL = new HashSet<String>();
3496 MOVED_TO_GLOBAL.add(Settings.Global.ADB_ENABLED);
3497 MOVED_TO_GLOBAL.add(Settings.Global.ASSISTED_GPS_ENABLED);
3498 MOVED_TO_GLOBAL.add(Settings.Global.BLUETOOTH_ON);
Christopher Tate58f41ec2013-01-11 15:40:36 -08003499 MOVED_TO_GLOBAL.add(Settings.Global.BUGREPORT_IN_POWER_MENU);
Christopher Tate06efb532012-08-24 15:29:27 -07003500 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_CELL_BROADCAST_SMS);
3501 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_ROAMING_MODE);
3502 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_SUBSCRIPTION_MODE);
3503 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE);
3504 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI);
3505 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ROAMING);
3506 MOVED_TO_GLOBAL.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED);
3507 MOVED_TO_GLOBAL.add(Settings.Global.DEVICE_PROVISIONED);
3508 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_DENSITY_FORCED);
3509 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_SIZE_FORCED);
3510 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE);
3511 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE);
Christopher Tate06efb532012-08-24 15:29:27 -07003512 MOVED_TO_GLOBAL.add(Settings.Global.MOBILE_DATA);
3513 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_BUCKET_DURATION);
3514 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_DELETE_AGE);
3515 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_PERSIST_BYTES);
3516 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_ROTATE_AGE);
3517 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_ENABLED);
3518 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_GLOBAL_ALERT_BYTES);
3519 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_POLL_INTERVAL);
Christopher Tate06efb532012-08-24 15:29:27 -07003520 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_SAMPLE_ENABLED);
3521 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_TIME_CACHE_MAX_AGE);
3522 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_BUCKET_DURATION);
3523 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_DELETE_AGE);
3524 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_PERSIST_BYTES);
3525 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_ROTATE_AGE);
3526 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_BUCKET_DURATION);
3527 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_DELETE_AGE);
3528 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_PERSIST_BYTES);
3529 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_ROTATE_AGE);
3530 MOVED_TO_GLOBAL.add(Settings.Global.NETWORK_PREFERENCE);
3531 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_DIFF);
3532 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_SPACING);
3533 MOVED_TO_GLOBAL.add(Settings.Global.NTP_SERVER);
3534 MOVED_TO_GLOBAL.add(Settings.Global.NTP_TIMEOUT);
3535 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_ERROR_POLL_COUNT);
3536 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS);
3537 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT);
3538 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS);
3539 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT);
3540 MOVED_TO_GLOBAL.add(Settings.Global.SAMPLING_PROFILER_MS);
3541 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL);
3542 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_REDIR_HOST);
3543 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_TARGET_URL);
3544 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_APN);
3545 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_REQUIRED);
3546 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_SUPPORTED);
Christopher Tate06efb532012-08-24 15:29:27 -07003547 MOVED_TO_GLOBAL.add(Settings.Global.USB_MASS_STORAGE_ENABLED);
3548 MOVED_TO_GLOBAL.add(Settings.Global.USE_GOOGLE_MAIL);
Robert Greenwalt3ea0c992013-10-03 21:13:49 +00003549 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_COUNTRY_CODE);
Christopher Tate06efb532012-08-24 15:29:27 -07003550 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FRAMEWORK_SCAN_INTERVAL_MS);
3551 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FREQUENCY_BAND);
3552 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_IDLE_MS);
3553 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT);
3554 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS);
3555 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
3556 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY);
3557 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NUM_OPEN_NETWORKS_KEPT);
3558 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ON);
3559 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_DEVICE_NAME);
3560 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE);
3561 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
3562 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED);
vandwalle7c3606c2014-03-31 19:12:07 -07003563 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ENHANCED_AUTO_JOIN);
3564 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORK_SHOW_RSSI);
Christopher Tate06efb532012-08-24 15:29:27 -07003565 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_ON);
3566 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED);
Christopher Tate06efb532012-08-24 15:29:27 -07003567 MOVED_TO_GLOBAL.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON);
Christopher Tatec868b642012-09-12 17:41:04 -07003568 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_ENABLE);
3569 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT);
3570 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE);
3571 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS);
3572 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS);
3573 MOVED_TO_GLOBAL.add(Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS);
Christopher Tate06efb532012-08-24 15:29:27 -07003574 MOVED_TO_GLOBAL.add(Settings.Global.WTF_IS_FATAL);
Jeff Sharkey625239a2012-09-26 22:03:49 -07003575 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD);
3576 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_THRESHOLD);
3577 MOVED_TO_GLOBAL.add(Settings.Global.SEND_ACTION_APP_ERROR);
3578 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_AGE_SECONDS);
3579 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_MAX_FILES);
3580 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_KB);
3581 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_PERCENT);
3582 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_RESERVE_PERCENT);
3583 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_TAG_PREFIX);
3584 MOVED_TO_GLOBAL.add(Settings.Global.ERROR_LOGCAT_PREFIX);
3585 MOVED_TO_GLOBAL.add(Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL);
3586 MOVED_TO_GLOBAL.add(Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD);
3587 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE);
3588 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES);
3589 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES);
3590 MOVED_TO_GLOBAL.add(Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS);
3591 MOVED_TO_GLOBAL.add(Settings.Global.CONNECTIVITY_CHANGE_DELAY);
3592 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED);
3593 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_SERVER);
3594 MOVED_TO_GLOBAL.add(Settings.Global.NSD_ON);
3595 MOVED_TO_GLOBAL.add(Settings.Global.SET_INSTALL_LOCATION);
3596 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_INSTALL_LOCATION);
3597 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY);
3598 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY);
3599 MOVED_TO_GLOBAL.add(Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT);
3600 MOVED_TO_GLOBAL.add(Settings.Global.HTTP_PROXY);
3601 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_HOST);
3602 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_PORT);
3603 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST);
3604 MOVED_TO_GLOBAL.add(Settings.Global.SET_GLOBAL_HTTP_PROXY);
3605 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_DNS_SERVER);
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07003606 MOVED_TO_GLOBAL.add(Settings.Global.PREFERRED_NETWORK_MODE);
Hui Shu22671772014-10-01 21:41:07 +00003607 MOVED_TO_GLOBAL.add(Settings.Global.WEBVIEW_DATA_REDUCTION_PROXY_KEY);
Christopher Tate06efb532012-08-24 15:29:27 -07003608 }
3609
Christopher Tate66488d62012-10-02 11:58:01 -07003610 /** @hide */
Svetoslav683914b2015-01-15 14:22:26 -08003611 public static void getMovedToGlobalSettings(Set<String> outKeySet) {
Christopher Tate66488d62012-10-02 11:58:01 -07003612 outKeySet.addAll(MOVED_TO_GLOBAL);
3613 }
3614
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003615 /**
3616 * Look up a name in the database.
3617 * @param resolver to access the database with
3618 * @param name to look up in the table
3619 * @return the corresponding value, or null if not present
3620 */
Dianne Hackborn139748f2012-09-24 11:36:57 -07003621 public static String getString(ContentResolver resolver, String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07003622 return getStringForUser(resolver, name, UserHandle.myUserId());
3623 }
3624
3625 /** @hide */
Dianne Hackborn139748f2012-09-24 11:36:57 -07003626 public static String getStringForUser(ContentResolver resolver, String name,
Christopher Tate06efb532012-08-24 15:29:27 -07003627 int userHandle) {
3628 if (MOVED_TO_GLOBAL.contains(name)) {
3629 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure"
3630 + " to android.provider.Settings.Global.");
3631 return Global.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003632 }
Amith Yamasani52c489c2012-03-28 11:42:42 -07003633
Dianne Hackborn139748f2012-09-24 11:36:57 -07003634 if (MOVED_TO_LOCK_SETTINGS.contains(name)) {
3635 synchronized (Secure.class) {
3636 if (sLockSettings == null) {
3637 sLockSettings = ILockSettings.Stub.asInterface(
3638 (IBinder) ServiceManager.getService("lock_settings"));
3639 sIsSystemProcess = Process.myUid() == Process.SYSTEM_UID;
3640 }
3641 }
3642 if (sLockSettings != null && !sIsSystemProcess) {
3643 try {
3644 return sLockSettings.getString(name, "0", userHandle);
3645 } catch (RemoteException re) {
3646 // Fall through
3647 }
Amith Yamasani52c489c2012-03-28 11:42:42 -07003648 }
3649 }
3650
Christopher Tate06efb532012-08-24 15:29:27 -07003651 return sNameValueCache.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003652 }
3653
3654 /**
3655 * Store a name/value pair into the database.
3656 * @param resolver to access the database with
3657 * @param name to store
3658 * @param value to associate with the name
3659 * @return true if the value was set, false on database errors
3660 */
Christopher Tate06efb532012-08-24 15:29:27 -07003661 public static boolean putString(ContentResolver resolver, String name, String value) {
3662 return putStringForUser(resolver, name, value, UserHandle.myUserId());
3663 }
3664
3665 /** @hide */
3666 public static boolean putStringForUser(ContentResolver resolver, String name, String value,
3667 int userHandle) {
Julia Reynolds82735bc2014-09-04 16:43:30 -04003668 if (LOCATION_MODE.equals(name)) {
3669 // HACK ALERT: temporary hack to work around b/10491283.
3670 // TODO: once b/10491283 fixed, remove this hack
3671 return setLocationModeForUser(resolver, Integer.parseInt(value), userHandle);
3672 }
Christopher Tate06efb532012-08-24 15:29:27 -07003673 if (MOVED_TO_GLOBAL.contains(name)) {
3674 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
3675 + " to android.provider.Settings.Global");
3676 return Global.putStringForUser(resolver, name, value, userHandle);
3677 }
Christopher Tate06efb532012-08-24 15:29:27 -07003678 return sNameValueCache.putStringForUser(resolver, name, value, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003679 }
3680
3681 /**
3682 * Construct the content URI for a particular name/value pair,
3683 * useful for monitoring changes with a ContentObserver.
3684 * @param name to look up in the table
3685 * @return the corresponding content URI, or null if not present
3686 */
3687 public static Uri getUriFor(String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07003688 if (MOVED_TO_GLOBAL.contains(name)) {
3689 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure"
3690 + " to android.provider.Settings.Global, returning global URI.");
3691 return Global.getUriFor(Global.CONTENT_URI, name);
3692 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003693 return getUriFor(CONTENT_URI, name);
3694 }
3695
3696 /**
3697 * Convenience function for retrieving a single secure settings value
3698 * as an integer. Note that internally setting values are always
3699 * stored as strings; this function converts the string to an integer
3700 * for you. The default value will be returned if the setting is
3701 * not defined or not an integer.
3702 *
3703 * @param cr The ContentResolver to access.
3704 * @param name The name of the setting to retrieve.
3705 * @param def Value to return if the setting is not defined.
3706 *
3707 * @return The setting's current value, or 'def' if it is not defined
3708 * or not a valid integer.
3709 */
3710 public static int getInt(ContentResolver cr, String name, int def) {
Christopher Tate06efb532012-08-24 15:29:27 -07003711 return getIntForUser(cr, name, def, UserHandle.myUserId());
3712 }
3713
3714 /** @hide */
3715 public static int getIntForUser(ContentResolver cr, String name, int def, int userHandle) {
Tom O'Neill7f6f4572013-08-27 10:53:15 -07003716 if (LOCATION_MODE.equals(name)) {
3717 // HACK ALERT: temporary hack to work around b/10491283.
3718 // TODO: once b/10491283 fixed, remove this hack
3719 return getLocationModeForUser(cr, userHandle);
3720 }
Christopher Tate06efb532012-08-24 15:29:27 -07003721 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003722 try {
3723 return v != null ? Integer.parseInt(v) : def;
3724 } catch (NumberFormatException e) {
3725 return def;
3726 }
3727 }
3728
3729 /**
3730 * Convenience function for retrieving a single secure settings value
3731 * as an integer. Note that internally setting values are always
3732 * stored as strings; this function converts the string to an integer
3733 * for you.
3734 * <p>
3735 * This version does not take a default value. If the setting has not
3736 * been set, or the string value is not a number,
3737 * it throws {@link SettingNotFoundException}.
3738 *
3739 * @param cr The ContentResolver to access.
3740 * @param name The name of the setting to retrieve.
3741 *
3742 * @throws SettingNotFoundException Thrown if a setting by the given
3743 * name can't be found or the setting value is not an integer.
3744 *
3745 * @return The setting's current value.
3746 */
3747 public static int getInt(ContentResolver cr, String name)
3748 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07003749 return getIntForUser(cr, name, UserHandle.myUserId());
3750 }
3751
3752 /** @hide */
3753 public static int getIntForUser(ContentResolver cr, String name, int userHandle)
3754 throws SettingNotFoundException {
Tom O'Neill7f6f4572013-08-27 10:53:15 -07003755 if (LOCATION_MODE.equals(name)) {
3756 // HACK ALERT: temporary hack to work around b/10491283.
3757 // TODO: once b/10491283 fixed, remove this hack
3758 return getLocationModeForUser(cr, userHandle);
3759 }
Christopher Tate06efb532012-08-24 15:29:27 -07003760 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003761 try {
3762 return Integer.parseInt(v);
3763 } catch (NumberFormatException e) {
3764 throw new SettingNotFoundException(name);
3765 }
3766 }
3767
3768 /**
3769 * Convenience function for updating a single settings value as an
3770 * integer. This will either create a new entry in the table if the
3771 * given name does not exist, or modify the value of the existing row
3772 * with that name. Note that internally setting values are always
3773 * stored as strings, so this function converts the given value to a
3774 * string before storing it.
3775 *
3776 * @param cr The ContentResolver to access.
3777 * @param name The name of the setting to modify.
3778 * @param value The new value for the setting.
3779 * @return true if the value was set, false on database errors
3780 */
3781 public static boolean putInt(ContentResolver cr, String name, int value) {
Christopher Tate06efb532012-08-24 15:29:27 -07003782 return putIntForUser(cr, name, value, UserHandle.myUserId());
3783 }
3784
3785 /** @hide */
3786 public static boolean putIntForUser(ContentResolver cr, String name, int value,
3787 int userHandle) {
3788 return putStringForUser(cr, name, Integer.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003789 }
3790
3791 /**
3792 * Convenience function for retrieving a single secure settings value
3793 * as a {@code long}. Note that internally setting values are always
3794 * stored as strings; this function converts the string to a {@code long}
3795 * for you. The default value will be returned if the setting is
3796 * not defined or not a {@code long}.
3797 *
3798 * @param cr The ContentResolver to access.
3799 * @param name The name of the setting to retrieve.
3800 * @param def Value to return if the setting is not defined.
3801 *
3802 * @return The setting's current value, or 'def' if it is not defined
3803 * or not a valid {@code long}.
3804 */
3805 public static long getLong(ContentResolver cr, String name, long def) {
Christopher Tate06efb532012-08-24 15:29:27 -07003806 return getLongForUser(cr, name, def, UserHandle.myUserId());
3807 }
3808
3809 /** @hide */
3810 public static long getLongForUser(ContentResolver cr, String name, long def,
3811 int userHandle) {
3812 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003813 long value;
3814 try {
3815 value = valString != null ? Long.parseLong(valString) : def;
3816 } catch (NumberFormatException e) {
3817 value = def;
3818 }
3819 return value;
3820 }
3821
3822 /**
3823 * Convenience function for retrieving a single secure settings value
3824 * as a {@code long}. Note that internally setting values are always
3825 * stored as strings; this function converts the string to a {@code long}
3826 * for you.
3827 * <p>
3828 * This version does not take a default value. If the setting has not
3829 * been set, or the string value is not a number,
3830 * it throws {@link SettingNotFoundException}.
3831 *
3832 * @param cr The ContentResolver to access.
3833 * @param name The name of the setting to retrieve.
3834 *
3835 * @return The setting's current value.
3836 * @throws SettingNotFoundException Thrown if a setting by the given
3837 * name can't be found or the setting value is not an integer.
3838 */
3839 public static long getLong(ContentResolver cr, String name)
3840 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07003841 return getLongForUser(cr, name, UserHandle.myUserId());
3842 }
3843
3844 /** @hide */
3845 public static long getLongForUser(ContentResolver cr, String name, int userHandle)
3846 throws SettingNotFoundException {
3847 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003848 try {
3849 return Long.parseLong(valString);
3850 } catch (NumberFormatException e) {
3851 throw new SettingNotFoundException(name);
3852 }
3853 }
3854
3855 /**
3856 * Convenience function for updating a secure settings value as a long
3857 * integer. This will either create a new entry in the table if the
3858 * given name does not exist, or modify the value of the existing row
3859 * with that name. Note that internally setting values are always
3860 * stored as strings, so this function converts the given value to a
3861 * string before storing it.
3862 *
3863 * @param cr The ContentResolver to access.
3864 * @param name The name of the setting to modify.
3865 * @param value The new value for the setting.
3866 * @return true if the value was set, false on database errors
3867 */
3868 public static boolean putLong(ContentResolver cr, String name, long value) {
Christopher Tate06efb532012-08-24 15:29:27 -07003869 return putLongForUser(cr, name, value, UserHandle.myUserId());
3870 }
3871
3872 /** @hide */
3873 public static boolean putLongForUser(ContentResolver cr, String name, long value,
3874 int userHandle) {
3875 return putStringForUser(cr, name, Long.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003876 }
3877
3878 /**
3879 * Convenience function for retrieving a single secure settings value
3880 * as a floating point number. Note that internally setting values are
3881 * always stored as strings; this function converts the string to an
3882 * float for you. The default value will be returned if the setting
3883 * is not defined or not a valid float.
3884 *
3885 * @param cr The ContentResolver to access.
3886 * @param name The name of the setting to retrieve.
3887 * @param def Value to return if the setting is not defined.
3888 *
3889 * @return The setting's current value, or 'def' if it is not defined
3890 * or not a valid float.
3891 */
3892 public static float getFloat(ContentResolver cr, String name, float def) {
Christopher Tate06efb532012-08-24 15:29:27 -07003893 return getFloatForUser(cr, name, def, UserHandle.myUserId());
3894 }
3895
3896 /** @hide */
3897 public static float getFloatForUser(ContentResolver cr, String name, float def,
3898 int userHandle) {
3899 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003900 try {
3901 return v != null ? Float.parseFloat(v) : def;
3902 } catch (NumberFormatException e) {
3903 return def;
3904 }
3905 }
3906
3907 /**
3908 * Convenience function for retrieving a single secure settings value
3909 * as a float. Note that internally setting values are always
3910 * stored as strings; this function converts the string to a float
3911 * for you.
3912 * <p>
3913 * This version does not take a default value. If the setting has not
3914 * been set, or the string value is not a number,
3915 * it throws {@link SettingNotFoundException}.
3916 *
3917 * @param cr The ContentResolver to access.
3918 * @param name The name of the setting to retrieve.
3919 *
3920 * @throws SettingNotFoundException Thrown if a setting by the given
3921 * name can't be found or the setting value is not a float.
3922 *
3923 * @return The setting's current value.
3924 */
3925 public static float getFloat(ContentResolver cr, String name)
3926 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07003927 return getFloatForUser(cr, name, UserHandle.myUserId());
3928 }
3929
3930 /** @hide */
3931 public static float getFloatForUser(ContentResolver cr, String name, int userHandle)
3932 throws SettingNotFoundException {
3933 String v = getStringForUser(cr, name, userHandle);
Brian Muramatsue1d46982010-12-06 17:34:20 -08003934 if (v == null) {
3935 throw new SettingNotFoundException(name);
3936 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003937 try {
3938 return Float.parseFloat(v);
3939 } catch (NumberFormatException e) {
3940 throw new SettingNotFoundException(name);
3941 }
3942 }
3943
3944 /**
3945 * Convenience function for updating a single settings value as a
3946 * floating point number. This will either create a new entry in the
3947 * table if the given name does not exist, or modify the value of the
3948 * existing row with that name. Note that internally setting values
3949 * are always stored as strings, so this function converts the given
3950 * value to a string before storing it.
3951 *
3952 * @param cr The ContentResolver to access.
3953 * @param name The name of the setting to modify.
3954 * @param value The new value for the setting.
3955 * @return true if the value was set, false on database errors
3956 */
3957 public static boolean putFloat(ContentResolver cr, String name, float value) {
Christopher Tate06efb532012-08-24 15:29:27 -07003958 return putFloatForUser(cr, name, value, UserHandle.myUserId());
3959 }
3960
3961 /** @hide */
3962 public static boolean putFloatForUser(ContentResolver cr, String name, float value,
3963 int userHandle) {
3964 return putStringForUser(cr, name, Float.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003965 }
3966
3967 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003968 * @deprecated Use {@link android.provider.Settings.Global#DEVELOPMENT_SETTINGS_ENABLED}
3969 * instead
Dianne Hackborn895f99e2012-02-02 11:49:12 -08003970 */
Christopher Tate06efb532012-08-24 15:29:27 -07003971 @Deprecated
3972 public static final String DEVELOPMENT_SETTINGS_ENABLED =
3973 Global.DEVELOPMENT_SETTINGS_ENABLED;
Dianne Hackborn895f99e2012-02-02 11:49:12 -08003974
3975 /**
Dianne Hackborn5773bfdb2012-07-13 13:24:15 -07003976 * When the user has enable the option to have a "bug report" command
3977 * in the power menu.
Christopher Tate58f41ec2013-01-11 15:40:36 -08003978 * @deprecated Use {@link android.provider.Settings.Global#BUGREPORT_IN_POWER_MENU} instead
Dianne Hackborn5773bfdb2012-07-13 13:24:15 -07003979 * @hide
3980 */
Christopher Tate58f41ec2013-01-11 15:40:36 -08003981 @Deprecated
Dianne Hackborn5773bfdb2012-07-13 13:24:15 -07003982 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu";
3983
3984 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003985 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003986 */
Christopher Tate06efb532012-08-24 15:29:27 -07003987 @Deprecated
3988 public static final String ADB_ENABLED = Global.ADB_ENABLED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003989
3990 /**
3991 * Setting to allow mock locations and location provider status to be injected into the
3992 * LocationManager service for testing purposes during application development. These
3993 * locations and status values override actual location and status information generated
3994 * by network, gps, or other location providers.
3995 */
3996 public static final String ALLOW_MOCK_LOCATION = "mock_location";
3997
3998 /**
Doug Zongkerd8893db2010-01-26 12:29:44 -08003999 * A 64-bit number (as a hex string) that is randomly
Scott Main44895332013-11-12 09:23:13 -08004000 * generated when the user first sets up the device and should remain
4001 * constant for the lifetime of the user's device. The value may
4002 * change if a factory reset is performed on the device.
4003 * <p class="note"><strong>Note:</strong> When a device has <a
4004 * href="{@docRoot}about/versions/android-4.2.html#MultipleUsers">multiple users</a>
4005 * (available on certain devices running Android 4.2 or higher), each user appears as a
4006 * completely separate device, so the {@code ANDROID_ID} value is unique to each
4007 * user.</p>
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004008 */
4009 public static final String ANDROID_ID = "android_id";
4010
4011 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004012 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004013 */
Christopher Tate06efb532012-08-24 15:29:27 -07004014 @Deprecated
4015 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004016
4017 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004018 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004019 */
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004020 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07004021 public static final String DATA_ROAMING = Global.DATA_ROAMING;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004022
4023 /**
4024 * Setting to record the input method used by default, holding the ID
4025 * of the desired method.
4026 */
4027 public static final String DEFAULT_INPUT_METHOD = "default_input_method";
4028
4029 /**
satokab751aa2010-09-14 19:17:36 +09004030 * Setting to record the input method subtype used by default, holding the ID
4031 * of the desired method.
4032 */
4033 public static final String SELECTED_INPUT_METHOD_SUBTYPE =
4034 "selected_input_method_subtype";
4035
4036 /**
satok723a27e2010-11-11 14:58:11 +09004037 * Setting to record the history of input method subtype, holding the pair of ID of IME
4038 * and its last used subtype.
4039 * @hide
4040 */
4041 public static final String INPUT_METHODS_SUBTYPE_HISTORY =
4042 "input_methods_subtype_history";
4043
4044 /**
satok5c58dfc2010-12-14 21:54:47 +09004045 * Setting to record the visibility of input method selector
4046 */
4047 public static final String INPUT_METHOD_SELECTOR_VISIBILITY =
4048 "input_method_selector_visibility";
4049
4050 /**
Dianne Hackborn91097de2014-04-04 18:02:06 -07004051 * The currently selected voice interaction service flattened ComponentName.
4052 * @hide
4053 */
4054 public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
4055
4056 /**
Zhihai Xuaf5971e2013-06-10 20:28:31 -07004057 * bluetooth HCI snoop log configuration
4058 * @hide
4059 */
4060 public static final String BLUETOOTH_HCI_LOG =
4061 "bluetooth_hci_log";
4062
4063 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004064 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004065 */
Christopher Tate06efb532012-08-24 15:29:27 -07004066 @Deprecated
4067 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004068
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004069 /**
Russell Brennerde6ae442012-09-26 20:53:10 -07004070 * Whether the current user has been set up via setup wizard (0 = false, 1 = true)
4071 * @hide
4072 */
4073 public static final String USER_SETUP_COMPLETE = "user_setup_complete";
4074
4075 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004076 * List of input methods that are currently enabled. This is a string
4077 * containing the IDs of all enabled input methods, each ID separated
4078 * by ':'.
4079 */
4080 public static final String ENABLED_INPUT_METHODS = "enabled_input_methods";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004081
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004082 /**
Amith Yamasanie861ec12010-03-24 21:39:27 -07004083 * List of system input methods that are currently disabled. This is a string
4084 * containing the IDs of all disabled input methods, each ID separated
4085 * by ':'.
4086 * @hide
4087 */
4088 public static final String DISABLED_SYSTEM_INPUT_METHODS = "disabled_system_input_methods";
4089
4090 /**
Michael Wright7b5a96b2014-08-09 19:28:42 -07004091 * Whether to show the IME when a hard keyboard is connected. This is a boolean that
4092 * determines if the IME should be shown when a hard keyboard is attached.
4093 * @hide
4094 */
4095 public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard";
4096
4097 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07004098 * Host name and port for global http proxy. Uses ':' seperator for
4099 * between host and port.
4100 *
4101 * @deprecated Use {@link Global#HTTP_PROXY}
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004102 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07004103 @Deprecated
4104 public static final String HTTP_PROXY = Global.HTTP_PROXY;
Robert Greenwalte90aa5e2010-09-01 11:34:05 -07004105
4106 /**
Christopher Tateaa036a22014-05-19 16:33:27 -07004107 * Whether applications can be installed for this user via the system's
4108 * {@link Intent#ACTION_INSTALL_PACKAGE} mechanism.
4109 *
4110 * <p>1 = permit app installation via the system package installer intent
4111 * <p>0 = do not allow use of the package installer
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004112 */
Christopher Tateaa036a22014-05-19 16:33:27 -07004113 public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004114
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004115 /**
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004116 * Comma-separated list of location providers that activities may access. Do not rely on
4117 * this value being present in settings.db or on ContentObserver notifications on the
4118 * corresponding Uri.
Tom O'Neilla324ac72013-08-26 14:40:23 -07004119 *
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004120 * @deprecated use {@link #LOCATION_MODE} and
4121 * {@link LocationManager#MODE_CHANGED_ACTION} (or
4122 * {@link LocationManager#PROVIDERS_CHANGED_ACTION})
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004123 */
Tom O'Neilla324ac72013-08-26 14:40:23 -07004124 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004125 public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004126
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004127 /**
Tom O'Neill7f6f4572013-08-27 10:53:15 -07004128 * The degree of location access enabled by the user.
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004129 * <p>
Tom O'Neill7f6f4572013-08-27 10:53:15 -07004130 * When used with {@link #putInt(ContentResolver, String, int)}, must be one of {@link
4131 * #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, {@link
4132 * #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. When used with {@link
4133 * #getInt(ContentResolver, String)}, the caller must gracefully handle additional location
4134 * modes that might be added in the future.
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004135 * <p>
4136 * Note: do not rely on this value being present in settings.db or on ContentObserver
4137 * notifications for the corresponding Uri. Use {@link LocationManager#MODE_CHANGED_ACTION}
4138 * to receive changes in this value.
Tom O'Neilla324ac72013-08-26 14:40:23 -07004139 */
4140 public static final String LOCATION_MODE = "location_mode";
4141
4142 /**
Tom O'Neill7f6f4572013-08-27 10:53:15 -07004143 * Location access disabled.
Tom O'Neill1f48b782013-08-19 18:14:56 -07004144 */
4145 public static final int LOCATION_MODE_OFF = 0;
4146 /**
4147 * Network Location Provider disabled, but GPS and other sensors enabled.
4148 */
4149 public static final int LOCATION_MODE_SENSORS_ONLY = 1;
4150 /**
Tom O'Neilld5759432013-09-11 11:03:03 -07004151 * Reduced power usage, such as limiting the number of GPS updates per hour. Requests
4152 * with {@link android.location.Criteria#POWER_HIGH} may be downgraded to
4153 * {@link android.location.Criteria#POWER_MEDIUM}.
Tom O'Neill1f48b782013-08-19 18:14:56 -07004154 */
4155 public static final int LOCATION_MODE_BATTERY_SAVING = 2;
4156 /**
4157 * Best-effort location computation allowed.
4158 */
4159 public static final int LOCATION_MODE_HIGH_ACCURACY = 3;
4160
4161 /**
Danielle Millett925a7d82012-03-19 18:02:20 -04004162 * A flag containing settings used for biometric weak
4163 * @hide
4164 */
Adrian Roos230635e2015-01-07 20:50:29 +01004165 @Deprecated
Danielle Millett925a7d82012-03-19 18:02:20 -04004166 public static final String LOCK_BIOMETRIC_WEAK_FLAGS =
4167 "lock_biometric_weak_flags";
4168
4169 /**
Jason Monk94cfd9d2014-10-31 13:18:21 -04004170 * Whether lock-to-app will lock the keyguard when exiting.
4171 * @hide
4172 */
4173 public static final String LOCK_TO_APP_EXIT_LOCKED = "lock_to_app_exit_locked";
4174
4175 /**
Amith Yamasani156c4352010-03-05 17:10:03 -08004176 * Whether autolock is enabled (0 = false, 1 = true)
Adrian Roos9dd16eb2015-01-08 16:20:49 +01004177 *
4178 * @deprecated Use {@link android.app.KeyguardManager} to determine the state and security
4179 * level of the keyguard.
Amith Yamasani156c4352010-03-05 17:10:03 -08004180 */
Adrian Roos9dd16eb2015-01-08 16:20:49 +01004181 @Deprecated
Amith Yamasani156c4352010-03-05 17:10:03 -08004182 public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
4183
4184 /**
4185 * Whether lock pattern is visible as user enters (0 = false, 1 = true)
4186 */
4187 public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
4188
4189 /**
Jeff Sharkey5ed9d682012-10-10 14:28:27 -07004190 * Whether lock pattern will vibrate as user enters (0 = false, 1 =
4191 * true)
4192 *
4193 * @deprecated Starting in {@link VERSION_CODES#JELLY_BEAN_MR1} the
4194 * lockscreen uses
4195 * {@link Settings.System#HAPTIC_FEEDBACK_ENABLED}.
Amith Yamasani156c4352010-03-05 17:10:03 -08004196 */
Jeff Sharkey5ed9d682012-10-10 14:28:27 -07004197 @Deprecated
4198 public static final String
4199 LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
Amith Yamasani156c4352010-03-05 17:10:03 -08004200
4201 /**
Jim Millerbc4603b2010-08-30 21:21:34 -07004202 * This preference allows the device to be locked given time after screen goes off,
4203 * subject to current DeviceAdmin policy limits.
4204 * @hide
4205 */
4206 public static final String LOCK_SCREEN_LOCK_AFTER_TIMEOUT = "lock_screen_lock_after_timeout";
4207
4208
4209 /**
John Spurlock5f050e52012-10-27 10:44:19 -04004210 * This preference contains the string that shows for owner info on LockScreen.
Jim Miller253a5ef2010-10-13 20:57:29 -07004211 * @hide
Jim Miller187ec582013-04-15 18:27:54 -07004212 * @deprecated
Jim Miller253a5ef2010-10-13 20:57:29 -07004213 */
4214 public static final String LOCK_SCREEN_OWNER_INFO = "lock_screen_owner_info";
4215
4216 /**
John Spurlock5f050e52012-10-27 10:44:19 -04004217 * Ids of the user-selected appwidgets on the lockscreen (comma-delimited).
Jim Millerf229e4d2012-09-12 20:32:50 -07004218 * @hide
4219 */
Adrian Roos230635e2015-01-07 20:50:29 +01004220 @Deprecated
Michael Jurkaaa2859a2012-10-24 12:46:49 -07004221 public static final String LOCK_SCREEN_APPWIDGET_IDS =
4222 "lock_screen_appwidget_ids";
Jim Millerf229e4d2012-09-12 20:32:50 -07004223
4224 /**
Jim Miller08fa40c2014-04-29 18:18:47 -07004225 * List of enrolled fingerprint identifiers (comma-delimited).
4226 * @hide
4227 */
4228 public static final String USER_FINGERPRINT_IDS = "user_fingerprint_ids";
4229
4230 /**
Jim Miller51117262012-11-04 17:58:09 -08004231 * Id of the appwidget shown on the lock screen when appwidgets are disabled.
4232 * @hide
4233 */
Adrian Roos230635e2015-01-07 20:50:29 +01004234 @Deprecated
Jim Miller51117262012-11-04 17:58:09 -08004235 public static final String LOCK_SCREEN_FALLBACK_APPWIDGET_ID =
4236 "lock_screen_fallback_appwidget_id";
4237
4238 /**
John Spurlock5f050e52012-10-27 10:44:19 -04004239 * Index of the lockscreen appwidget to restore, -1 if none.
4240 * @hide
4241 */
Adrian Roos230635e2015-01-07 20:50:29 +01004242 @Deprecated
John Spurlock5f050e52012-10-27 10:44:19 -04004243 public static final String LOCK_SCREEN_STICKY_APPWIDGET =
4244 "lock_screen_sticky_appwidget";
4245
4246 /**
4247 * This preference enables showing the owner info on LockScreen.
Jim Miller253a5ef2010-10-13 20:57:29 -07004248 * @hide
Jim Miller187ec582013-04-15 18:27:54 -07004249 * @deprecated
Jim Miller253a5ef2010-10-13 20:57:29 -07004250 */
4251 public static final String LOCK_SCREEN_OWNER_INFO_ENABLED =
4252 "lock_screen_owner_info_enabled";
4253
4254 /**
Dan Sandler5d7c3cc2014-02-18 17:35:15 -05004255 * When set by a user, allows notifications to be shown atop a securely locked screen
4256 * in their full "private" form (same as when the device is unlocked).
Dan Sandlerfd16d562014-02-13 18:43:31 -08004257 * @hide
4258 */
4259 public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS =
4260 "lock_screen_allow_private_notifications";
4261
4262 /**
Chris Wrencd8f4f72014-08-27 18:48:13 -04004263 * Set by the system to track if the user needs to see the call to action for
4264 * the lockscreen notification policy.
4265 * @hide
4266 */
4267 public static final String SHOW_NOTE_ABOUT_NOTIFICATION_HIDING =
4268 "show_note_about_notification_hiding";
4269
4270 /**
Adrian Roos3870d452014-09-05 18:22:28 +02004271 * Set to 1 by the system after trust agents have been initialized.
4272 * @hide
4273 */
4274 public static final String TRUST_AGENTS_INITIALIZED =
4275 "trust_agents_initialized";
4276
4277 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004278 * The Logging ID (a unique 64-bit value) as a hex string.
4279 * Used as a pseudonymous identifier for logging.
4280 * @deprecated This identifier is poorly initialized and has
4281 * many collisions. It should not be used.
4282 */
4283 @Deprecated
4284 public static final String LOGGING_ID = "logging_id";
4285
4286 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004287 * @deprecated Use {@link android.provider.Settings.Global#NETWORK_PREFERENCE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004288 */
Christopher Tate06efb532012-08-24 15:29:27 -07004289 @Deprecated
4290 public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004291
4292 /**
Dan Egnor1c9131c2010-02-13 10:38:55 -08004293 * No longer supported.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004294 */
4295 public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004296
4297 /**
Dan Egnor1c9131c2010-02-13 10:38:55 -08004298 * No longer supported.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004299 */
4300 public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004301
4302 /**
Dan Egnor1c9131c2010-02-13 10:38:55 -08004303 * No longer supported.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004304 */
4305 public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004306
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004307 /**
4308 * Settings classname to launch when Settings is clicked from All
4309 * Applications. Needed because of user testing between the old
4310 * and new Settings apps.
4311 */
4312 // TODO: 881807
4313 public static final String SETTINGS_CLASSNAME = "settings_classname";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004314
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004315 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004316 * @deprecated Use {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004317 */
Christopher Tate06efb532012-08-24 15:29:27 -07004318 @Deprecated
4319 public static final String USB_MASS_STORAGE_ENABLED = Global.USB_MASS_STORAGE_ENABLED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004320
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004321 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004322 * @deprecated Use {@link android.provider.Settings.Global#USE_GOOGLE_MAIL} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004323 */
Christopher Tate06efb532012-08-24 15:29:27 -07004324 @Deprecated
4325 public static final String USE_GOOGLE_MAIL = Global.USE_GOOGLE_MAIL;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004326
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004327 /**
svetoslavganov75986cf2009-05-14 22:28:01 -07004328 * If accessibility is enabled.
4329 */
4330 public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled";
4331
4332 /**
Svetoslav Ganov00aabf72011-07-21 11:35:03 -07004333 * If touch exploration is enabled.
Svetoslav Ganov35bfede2011-07-14 17:57:06 -07004334 */
Svetoslav Ganov00aabf72011-07-21 11:35:03 -07004335 public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
Svetoslav Ganov35bfede2011-07-14 17:57:06 -07004336
4337 /**
svetoslavganov75986cf2009-05-14 22:28:01 -07004338 * List of the enabled accessibility providers.
4339 */
4340 public static final String ENABLED_ACCESSIBILITY_SERVICES =
4341 "enabled_accessibility_services";
4342
4343 /**
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07004344 * List of the accessibility services to which the user has granted
Svetoslav Ganov9a4c5cd2012-05-30 14:06:32 -07004345 * permission to put the device into touch exploration mode.
4346 *
4347 * @hide
4348 */
4349 public static final String TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES =
4350 "touch_exploration_granted_accessibility_services";
4351
4352 /**
Svetoslav Ganov55f937a2011-12-05 11:42:07 -08004353 * Whether to speak passwords while in accessibility mode.
4354 */
4355 public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
4356
4357 /**
Chris Craikcce47eb2014-07-16 15:12:15 -07004358 * Whether to draw text with high contrast while in accessibility mode.
4359 *
4360 * @hide
4361 */
4362 public static final String ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED =
4363 "high_text_contrast_enabled";
4364
4365 /**
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004366 * If injection of accessibility enhancing JavaScript screen-reader
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004367 * is enabled.
4368 * <p>
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004369 * Note: The JavaScript based screen-reader is served by the
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004370 * Google infrastructure and enable users with disabilities to
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07004371 * efficiently navigate in and explore web content.
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004372 * </p>
4373 * <p>
4374 * This property represents a boolean value.
4375 * </p>
4376 * @hide
4377 */
4378 public static final String ACCESSIBILITY_SCRIPT_INJECTION =
4379 "accessibility_script_injection";
4380
4381 /**
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004382 * The URL for the injected JavaScript based screen-reader used
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07004383 * for providing accessibility of content in WebView.
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004384 * <p>
4385 * Note: The JavaScript based screen-reader is served by the
4386 * Google infrastructure and enable users with disabilities to
4387 * efficiently navigate in and explore web content.
4388 * </p>
4389 * <p>
4390 * This property represents a string value.
4391 * </p>
4392 * @hide
4393 */
4394 public static final String ACCESSIBILITY_SCREEN_READER_URL =
4395 "accessibility_script_injection_url";
4396
4397 /**
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004398 * Key bindings for navigation in built-in accessibility support for web content.
4399 * <p>
4400 * Note: These key bindings are for the built-in accessibility navigation for
4401 * web content which is used as a fall back solution if JavaScript in a WebView
4402 * is not enabled or the user has not opted-in script injection from Google.
4403 * </p>
4404 * <p>
4405 * The bindings are separated by semi-colon. A binding is a mapping from
4406 * a key to a sequence of actions (for more details look at
4407 * android.webkit.AccessibilityInjector). A key is represented as the hexademical
4408 * string representation of an integer obtained from a meta state (optional) shifted
4409 * sixteen times left and bitwise ored with a key code. An action is represented
4410 * as a hexademical string representation of an integer where the first two digits
4411 * are navigation action index, the second, the third, and the fourth digit pairs
4412 * represent the action arguments. The separate actions in a binding are colon
4413 * separated. The key and the action sequence it maps to are separated by equals.
4414 * </p>
4415 * <p>
4416 * For example, the binding below maps the DPAD right button to traverse the
4417 * current navigation axis once without firing an accessibility event and to
4418 * perform the same traversal again but to fire an event:
4419 * <code>
4420 * 0x16=0x01000100:0x01000101;
4421 * </code>
4422 * </p>
4423 * <p>
4424 * The goal of this binding is to enable dynamic rebinding of keys to
4425 * navigation actions for web content without requiring a framework change.
4426 * </p>
4427 * <p>
4428 * This property represents a string value.
4429 * </p>
4430 * @hide
4431 */
4432 public static final String ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS =
4433 "accessibility_web_content_key_bindings";
4434
4435 /**
Svetoslav Ganov1cf70bb2012-08-06 10:53:34 -07004436 * Setting that specifies whether the display magnification is enabled.
4437 * Display magnifications allows the user to zoom in the display content
4438 * and is targeted to low vision users. The current magnification scale
4439 * is controlled by {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE}.
4440 *
4441 * @hide
4442 */
4443 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED =
4444 "accessibility_display_magnification_enabled";
4445
4446 /**
4447 * Setting that specifies what the display magnification scale is.
4448 * Display magnifications allows the user to zoom in the display
4449 * content and is targeted to low vision users. Whether a display
4450 * magnification is performed is controlled by
4451 * {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED}
4452 *
4453 * @hide
4454 */
4455 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE =
4456 "accessibility_display_magnification_scale";
4457
4458 /**
4459 * Setting that specifies whether the display magnification should be
4460 * automatically updated. If this fearture is enabled the system will
4461 * exit magnification mode or pan the viewport when a context change
4462 * occurs. For example, on staring a new activity or rotating the screen,
4463 * the system may zoom out so the user can see the new context he is in.
4464 * Another example is on showing a window that is not visible in the
4465 * magnified viewport the system may pan the viewport to make the window
4466 * the has popped up so the user knows that the context has changed.
4467 * Whether a screen magnification is performed is controlled by
4468 * {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED}
4469 *
4470 * @hide
4471 */
4472 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE =
4473 "accessibility_display_magnification_auto_update";
4474
4475 /**
Alan Viveretteef793802013-07-23 14:15:28 -07004476 * Setting that specifies whether timed text (captions) should be
4477 * displayed in video content. Text display properties are controlled by
4478 * the following settings:
4479 * <ul>
4480 * <li>{@link #ACCESSIBILITY_CAPTIONING_LOCALE}
4481 * <li>{@link #ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR}
4482 * <li>{@link #ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR}
4483 * <li>{@link #ACCESSIBILITY_CAPTIONING_EDGE_COLOR}
4484 * <li>{@link #ACCESSIBILITY_CAPTIONING_EDGE_TYPE}
4485 * <li>{@link #ACCESSIBILITY_CAPTIONING_TYPEFACE}
Alan Viverette69ce69b2013-08-29 12:23:48 -07004486 * <li>{@link #ACCESSIBILITY_CAPTIONING_FONT_SCALE}
Alan Viveretteef793802013-07-23 14:15:28 -07004487 * </ul>
4488 *
4489 * @hide
4490 */
4491 public static final String ACCESSIBILITY_CAPTIONING_ENABLED =
4492 "accessibility_captioning_enabled";
4493
4494 /**
4495 * Setting that specifies the language for captions as a locale string,
4496 * e.g. en_US.
4497 *
4498 * @see java.util.Locale#toString
4499 * @hide
4500 */
4501 public static final String ACCESSIBILITY_CAPTIONING_LOCALE =
4502 "accessibility_captioning_locale";
4503
4504 /**
Alan Viverette43a1e3d2013-08-02 16:45:03 -07004505 * Integer property that specifies the preset style for captions, one
4506 * of:
4507 * <ul>
Alan Viverette69ce69b2013-08-29 12:23:48 -07004508 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#PRESET_CUSTOM}
4509 * <li>a valid index of {@link android.view.accessibility.CaptioningManager.CaptionStyle#PRESETS}
Alan Viverette43a1e3d2013-08-02 16:45:03 -07004510 * </ul>
4511 *
4512 * @see java.util.Locale#toString
4513 * @hide
4514 */
4515 public static final String ACCESSIBILITY_CAPTIONING_PRESET =
4516 "accessibility_captioning_preset";
4517
4518 /**
Alan Viveretteef793802013-07-23 14:15:28 -07004519 * Integer property that specifes the background color for captions as a
4520 * packed 32-bit color.
4521 *
4522 * @see android.graphics.Color#argb
4523 * @hide
4524 */
4525 public static final String ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR =
4526 "accessibility_captioning_background_color";
4527
4528 /**
4529 * Integer property that specifes the foreground color for captions as a
4530 * packed 32-bit color.
4531 *
4532 * @see android.graphics.Color#argb
4533 * @hide
4534 */
4535 public static final String ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR =
4536 "accessibility_captioning_foreground_color";
4537
4538 /**
4539 * Integer property that specifes the edge type for captions, one of:
4540 * <ul>
Alan Viverette69ce69b2013-08-29 12:23:48 -07004541 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_NONE}
4542 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_OUTLINE}
4543 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_DROP_SHADOW}
Alan Viveretteef793802013-07-23 14:15:28 -07004544 * </ul>
4545 *
4546 * @see #ACCESSIBILITY_CAPTIONING_EDGE_COLOR
4547 * @hide
4548 */
4549 public static final String ACCESSIBILITY_CAPTIONING_EDGE_TYPE =
4550 "accessibility_captioning_edge_type";
4551
4552 /**
4553 * Integer property that specifes the edge color for captions as a
4554 * packed 32-bit color.
4555 *
4556 * @see #ACCESSIBILITY_CAPTIONING_EDGE_TYPE
4557 * @see android.graphics.Color#argb
4558 * @hide
4559 */
4560 public static final String ACCESSIBILITY_CAPTIONING_EDGE_COLOR =
4561 "accessibility_captioning_edge_color";
4562
4563 /**
Alan Viverette55d70622013-12-11 15:22:14 -08004564 * Integer property that specifes the window color for captions as a
4565 * packed 32-bit color.
4566 *
4567 * @see android.graphics.Color#argb
4568 * @hide
4569 */
4570 public static final String ACCESSIBILITY_CAPTIONING_WINDOW_COLOR =
4571 "accessibility_captioning_window_color";
4572
4573 /**
Alan Viveretteef793802013-07-23 14:15:28 -07004574 * String property that specifies the typeface for captions, one of:
4575 * <ul>
4576 * <li>DEFAULT
4577 * <li>MONOSPACE
4578 * <li>SANS_SERIF
4579 * <li>SERIF
4580 * </ul>
4581 *
4582 * @see android.graphics.Typeface
4583 * @hide
4584 */
4585 public static final String ACCESSIBILITY_CAPTIONING_TYPEFACE =
4586 "accessibility_captioning_typeface";
4587
4588 /**
Alan Viverette69ce69b2013-08-29 12:23:48 -07004589 * Floating point property that specifies font scaling for captions.
Alan Viveretteef793802013-07-23 14:15:28 -07004590 *
4591 * @hide
4592 */
Alan Viverette69ce69b2013-08-29 12:23:48 -07004593 public static final String ACCESSIBILITY_CAPTIONING_FONT_SCALE =
4594 "accessibility_captioning_font_scale";
Alan Viveretteef793802013-07-23 14:15:28 -07004595
4596 /**
Alan Viverette410d4e32013-09-30 15:37:38 -07004597 * Setting that specifies whether display color inversion is enabled.
Alan Viverette410d4e32013-09-30 15:37:38 -07004598 */
4599 public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED =
4600 "accessibility_display_inversion_enabled";
4601
4602 /**
Alan Viverette410d4e32013-09-30 15:37:38 -07004603 * Setting that specifies whether display color space adjustment is
4604 * enabled.
4605 *
4606 * @hide
4607 */
4608 public static final String ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED =
4609 "accessibility_display_daltonizer_enabled";
4610
4611 /**
4612 * Integer property that specifies the type of color space adjustment to
4613 * perform. Valid values are defined in AccessibilityManager.
4614 *
4615 * @hide
4616 */
4617 public static final String ACCESSIBILITY_DISPLAY_DALTONIZER =
4618 "accessibility_display_daltonizer";
4619
4620 /**
Svetoslav Ganov54d068e2011-03-02 12:58:40 -08004621 * The timout for considering a press to be a long press in milliseconds.
4622 * @hide
4623 */
4624 public static final String LONG_PRESS_TIMEOUT = "long_press_timeout";
4625
4626 /**
Svetoslav Ganov6bd20bc2013-09-02 15:24:45 -07004627 * List of the enabled print services.
Svetoslav Ganov4b9a4d12013-06-11 15:20:06 -07004628 * @hide
4629 */
4630 public static final String ENABLED_PRINT_SERVICES =
4631 "enabled_print_services";
4632
4633 /**
Svetoslav Ganov6bd20bc2013-09-02 15:24:45 -07004634 * List of the system print services we enabled on first boot. On
4635 * first boot we enable all system, i.e. bundled print services,
4636 * once, so they work out-of-the-box.
4637 * @hide
4638 */
4639 public static final String ENABLED_ON_FIRST_BOOT_SYSTEM_PRINT_SERVICES =
4640 "enabled_on_first_boot_system_print_services";
4641
4642 /**
Jean-Michel Trivif62ba452009-06-04 14:55:24 -07004643 * Setting to always use the default text-to-speech settings regardless
4644 * of the application settings.
4645 * 1 = override application settings,
4646 * 0 = use application settings (if specified).
Narayan Kamath6d632962011-08-24 11:51:37 +01004647 *
4648 * @deprecated The value of this setting is no longer respected by
4649 * the framework text to speech APIs as of the Ice Cream Sandwich release.
Jean-Michel Trivif62ba452009-06-04 14:55:24 -07004650 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004651 @Deprecated
Jean-Michel Trivif62ba452009-06-04 14:55:24 -07004652 public static final String TTS_USE_DEFAULTS = "tts_use_defaults";
4653
4654 /**
4655 * Default text-to-speech engine speech rate. 100 = 1x
4656 */
4657 public static final String TTS_DEFAULT_RATE = "tts_default_rate";
4658
4659 /**
4660 * Default text-to-speech engine pitch. 100 = 1x
4661 */
4662 public static final String TTS_DEFAULT_PITCH = "tts_default_pitch";
4663
4664 /**
4665 * Default text-to-speech engine.
4666 */
4667 public static final String TTS_DEFAULT_SYNTH = "tts_default_synth";
4668
4669 /**
Jean-Michel Trivif4782672009-06-09 16:22:48 -07004670 * Default text-to-speech language.
Narayan Kamath6d632962011-08-24 11:51:37 +01004671 *
4672 * @deprecated this setting is no longer in use, as of the Ice Cream
4673 * Sandwich release. Apps should never need to read this setting directly,
4674 * instead can query the TextToSpeech framework classes for the default
4675 * locale. {@link TextToSpeech#getLanguage()}.
Jean-Michel Trivif4782672009-06-09 16:22:48 -07004676 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004677 @Deprecated
Jean-Michel Trivif4782672009-06-09 16:22:48 -07004678 public static final String TTS_DEFAULT_LANG = "tts_default_lang";
4679
4680 /**
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004681 * Default text-to-speech country.
Narayan Kamath6d632962011-08-24 11:51:37 +01004682 *
4683 * @deprecated this setting is no longer in use, as of the Ice Cream
4684 * Sandwich release. Apps should never need to read this setting directly,
4685 * instead can query the TextToSpeech framework classes for the default
4686 * locale. {@link TextToSpeech#getLanguage()}.
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004687 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004688 @Deprecated
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004689 public static final String TTS_DEFAULT_COUNTRY = "tts_default_country";
4690
4691 /**
4692 * Default text-to-speech locale variant.
Narayan Kamath6d632962011-08-24 11:51:37 +01004693 *
4694 * @deprecated this setting is no longer in use, as of the Ice Cream
4695 * Sandwich release. Apps should never need to read this setting directly,
4696 * instead can query the TextToSpeech framework classes for the
4697 * locale that is in use {@link TextToSpeech#getLanguage()}.
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004698 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004699 @Deprecated
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004700 public static final String TTS_DEFAULT_VARIANT = "tts_default_variant";
4701
4702 /**
Narayan Kamathe5b8c4d2011-08-22 15:37:47 +01004703 * Stores the default tts locales on a per engine basis. Stored as
4704 * a comma seperated list of values, each value being of the form
4705 * {@code engine_name:locale} for example,
Narayan Kamath6d632962011-08-24 11:51:37 +01004706 * {@code com.foo.ttsengine:eng-USA,com.bar.ttsengine:esp-ESP}. This
4707 * supersedes {@link #TTS_DEFAULT_LANG}, {@link #TTS_DEFAULT_COUNTRY} and
4708 * {@link #TTS_DEFAULT_VARIANT}. Apps should never need to read this
4709 * setting directly, and can query the TextToSpeech framework classes
4710 * for the locale that is in use.
Narayan Kamathe5b8c4d2011-08-22 15:37:47 +01004711 *
4712 * @hide
4713 */
4714 public static final String TTS_DEFAULT_LOCALE = "tts_default_locale";
4715
4716 /**
Charles Chenceffa152010-03-16 21:18:10 -07004717 * Space delimited list of plugin packages that are enabled.
4718 */
4719 public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
4720
4721 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004722 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON}
4723 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004724 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004725 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004726 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004727 Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004728
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004729 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004730 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY}
4731 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004732 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004733 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004734 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY =
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004735 Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004736
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004737 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004738 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT}
4739 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004740 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004741 @Deprecated
4742 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT =
4743 Global.WIFI_NUM_OPEN_NETWORKS_KEPT;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004744
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004745 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004746 * @deprecated Use {@link android.provider.Settings.Global#WIFI_ON}
4747 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004748 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004749 @Deprecated
4750 public static final String WIFI_ON = Global.WIFI_ON;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004751
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004752 /**
4753 * The acceptable packet loss percentage (range 0 - 100) before trying
4754 * another AP on the same network.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004755 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004756 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004757 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004758 public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE =
4759 "wifi_watchdog_acceptable_packet_loss_percentage";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004760
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004761 /**
4762 * The number of access points required for a network in order for the
4763 * watchdog to monitor it.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004764 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004765 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004766 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004767 public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004768
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004769 /**
4770 * The delay between background checks.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004771 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004772 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004773 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004774 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS =
4775 "wifi_watchdog_background_check_delay_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004776
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004777 /**
4778 * Whether the Wi-Fi watchdog is enabled for background checking even
4779 * after it thinks the user has connected to a good access point.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004780 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004781 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004782 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004783 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED =
4784 "wifi_watchdog_background_check_enabled";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004785
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004786 /**
4787 * The timeout for a background ping
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004788 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004789 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004790 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004791 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS =
4792 "wifi_watchdog_background_check_timeout_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004793
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004794 /**
4795 * The number of initial pings to perform that *may* be ignored if they
4796 * fail. Again, if these fail, they will *not* be used in packet loss
4797 * calculation. For example, one network always seemed to time out for
4798 * the first couple pings, so this is set to 3 by default.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004799 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004800 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004801 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004802 public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT =
4803 "wifi_watchdog_initial_ignored_ping_count";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004804
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004805 /**
4806 * The maximum number of access points (per network) to attempt to test.
4807 * If this number is reached, the watchdog will no longer monitor the
4808 * initial connection state for the network. This is a safeguard for
4809 * networks containing multiple APs whose DNS does not respond to pings.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004810 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004811 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004812 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004813 public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004814
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004815 /**
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004816 * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004817 */
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004818 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004819 public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
4820
4821 /**
4822 * A comma-separated list of SSIDs for which the Wi-Fi watchdog should be enabled.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004823 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004824 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004825 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004826 public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
4827
4828 /**
4829 * The number of pings to test if an access point is a good connection.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004830 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004831 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004832 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004833 public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004834
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004835 /**
4836 * The delay between pings.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004837 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004838 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004839 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004840 public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004841
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004842 /**
4843 * The timeout per ping.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004844 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004845 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004846 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004847 public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004848
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004849 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004850 * @deprecated Use
4851 * {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004852 */
Christopher Tate06efb532012-08-24 15:29:27 -07004853 @Deprecated
4854 public static final String WIFI_MAX_DHCP_RETRY_COUNT = Global.WIFI_MAX_DHCP_RETRY_COUNT;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004855
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004856 /**
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004857 * @deprecated Use
4858 * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004859 */
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004860 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004861 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004862 Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004863
4864 /**
Jeremy Joslin79294842014-12-03 17:15:28 -08004865 * The number of milliseconds to hold on to a PendingIntent based request. This delay gives
4866 * the receivers of the PendingIntent an opportunity to make a new network request before
4867 * the Network satisfying the request is potentially removed.
4868 *
4869 * @hide
4870 */
4871 public static final String CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS =
4872 "connectivity_release_pending_intent_delay_ms";
4873
4874 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07004875 * Whether background data usage is allowed.
4876 *
4877 * @deprecated As of {@link VERSION_CODES#ICE_CREAM_SANDWICH},
4878 * availability of background data depends on several
4879 * combined factors. When background data is unavailable,
4880 * {@link ConnectivityManager#getActiveNetworkInfo()} will
4881 * now appear disconnected.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004882 */
Jeff Sharkey3a844fc2011-08-16 14:37:57 -07004883 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004884 public static final String BACKGROUND_DATA = "background_data";
Wink Saville04e71b32009-04-02 11:00:54 -07004885
4886 /**
Bjorn Bringert98bfa392010-03-24 10:59:48 +00004887 * Origins for which browsers should allow geolocation by default.
4888 * The value is a space-separated list of origins.
4889 */
4890 public static final String ALLOWED_GEOLOCATION_ORIGINS
4891 = "allowed_geolocation_origins";
4892
4893 /**
Wink Savillee9b06d72009-05-18 21:47:50 -07004894 * The preferred TTY mode 0 = TTy Off, CDMA default
4895 * 1 = TTY Full
4896 * 2 = TTY HCO
4897 * 3 = TTY VCO
4898 * @hide
4899 */
4900 public static final String PREFERRED_TTY_MODE =
4901 "preferred_tty_mode";
4902
Wink Saville04e71b32009-04-02 11:00:54 -07004903 /**
Wink Saville04e71b32009-04-02 11:00:54 -07004904 * Whether the enhanced voice privacy mode is enabled.
4905 * 0 = normal voice privacy
4906 * 1 = enhanced voice privacy
4907 * @hide
4908 */
4909 public static final String ENHANCED_VOICE_PRIVACY_ENABLED = "enhanced_voice_privacy_enabled";
4910
4911 /**
4912 * Whether the TTY mode mode is enabled.
4913 * 0 = disabled
4914 * 1 = enabled
4915 * @hide
4916 */
4917 public static final String TTY_MODE_ENABLED = "tty_mode_enabled";
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07004918
4919 /**
Christopher Tate8031a3d2009-07-06 16:36:05 -07004920 * Controls whether settings backup is enabled.
Dianne Hackborncf098292009-07-01 19:55:20 -07004921 * Type: int ( 0 = disabled, 1 = enabled )
4922 * @hide
4923 */
4924 public static final String BACKUP_ENABLED = "backup_enabled";
4925
4926 /**
Christopher Tatecce9da52010-02-03 15:11:15 -08004927 * Controls whether application data is automatically restored from backup
4928 * at install time.
4929 * Type: int ( 0 = disabled, 1 = enabled )
4930 * @hide
4931 */
4932 public static final String BACKUP_AUTO_RESTORE = "backup_auto_restore";
4933
4934 /**
Christopher Tate8031a3d2009-07-06 16:36:05 -07004935 * Indicates whether settings backup has been fully provisioned.
4936 * Type: int ( 0 = unprovisioned, 1 = fully provisioned )
4937 * @hide
4938 */
4939 public static final String BACKUP_PROVISIONED = "backup_provisioned";
4940
4941 /**
Dianne Hackborncf098292009-07-01 19:55:20 -07004942 * Component of the transport to use for backup/restore.
4943 * @hide
4944 */
4945 public static final String BACKUP_TRANSPORT = "backup_transport";
Sanjay Jeyakumar21bf2412009-07-09 13:31:48 -07004946
Dianne Hackbornd7cd29d2009-07-01 11:22:45 -07004947 /**
4948 * Version for which the setup wizard was last shown. Bumped for
4949 * each release when there is new setup information to show.
4950 * @hide
4951 */
4952 public static final String LAST_SETUP_SHOWN = "last_setup_shown";
Dianne Hackborncf098292009-07-01 19:55:20 -07004953
4954 /**
Doug Zongker43866e02010-01-07 12:09:54 -08004955 * The interval in milliseconds after which Wi-Fi is considered idle.
4956 * When idle, it is possible for the device to be switched from Wi-Fi to
4957 * the mobile data network.
4958 * @hide
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004959 * @deprecated Use {@link android.provider.Settings.Global#WIFI_IDLE_MS}
4960 * instead.
Doug Zongker43866e02010-01-07 12:09:54 -08004961 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004962 @Deprecated
4963 public static final String WIFI_IDLE_MS = Global.WIFI_IDLE_MS;
Doug Zongker43866e02010-01-07 12:09:54 -08004964
4965 /**
Narayan Kamathee69ff42011-06-28 12:07:18 +01004966 * The global search provider chosen by the user (if multiple global
4967 * search providers are installed). This will be the provider returned
4968 * by {@link SearchManager#getGlobalSearchActivity()} if it's still
4969 * installed. This setting is stored as a flattened component name as
4970 * per {@link ComponentName#flattenToString()}.
4971 *
4972 * @hide
4973 */
4974 public static final String SEARCH_GLOBAL_SEARCH_ACTIVITY =
4975 "search_global_search_activity";
4976
4977 /**
Doug Zongkeraed8f8e2010-01-07 18:07:50 -08004978 * The number of promoted sources in GlobalSearch.
4979 * @hide
4980 */
4981 public static final String SEARCH_NUM_PROMOTED_SOURCES = "search_num_promoted_sources";
4982 /**
4983 * The maximum number of suggestions returned by GlobalSearch.
4984 * @hide
4985 */
4986 public static final String SEARCH_MAX_RESULTS_TO_DISPLAY = "search_max_results_to_display";
4987 /**
4988 * The number of suggestions GlobalSearch will ask each non-web search source for.
4989 * @hide
4990 */
4991 public static final String SEARCH_MAX_RESULTS_PER_SOURCE = "search_max_results_per_source";
4992 /**
4993 * The number of suggestions the GlobalSearch will ask the web search source for.
4994 * @hide
4995 */
4996 public static final String SEARCH_WEB_RESULTS_OVERRIDE_LIMIT =
4997 "search_web_results_override_limit";
4998 /**
4999 * The number of milliseconds that GlobalSearch will wait for suggestions from
5000 * promoted sources before continuing with all other sources.
5001 * @hide
5002 */
5003 public static final String SEARCH_PROMOTED_SOURCE_DEADLINE_MILLIS =
5004 "search_promoted_source_deadline_millis";
5005 /**
5006 * The number of milliseconds before GlobalSearch aborts search suggesiton queries.
5007 * @hide
5008 */
5009 public static final String SEARCH_SOURCE_TIMEOUT_MILLIS = "search_source_timeout_millis";
5010 /**
5011 * The maximum number of milliseconds that GlobalSearch shows the previous results
5012 * after receiving a new query.
5013 * @hide
5014 */
5015 public static final String SEARCH_PREFILL_MILLIS = "search_prefill_millis";
5016 /**
5017 * The maximum age of log data used for shortcuts in GlobalSearch.
5018 * @hide
5019 */
5020 public static final String SEARCH_MAX_STAT_AGE_MILLIS = "search_max_stat_age_millis";
5021 /**
5022 * The maximum age of log data used for source ranking in GlobalSearch.
5023 * @hide
5024 */
5025 public static final String SEARCH_MAX_SOURCE_EVENT_AGE_MILLIS =
5026 "search_max_source_event_age_millis";
5027 /**
5028 * The minimum number of impressions needed to rank a source in GlobalSearch.
5029 * @hide
5030 */
5031 public static final String SEARCH_MIN_IMPRESSIONS_FOR_SOURCE_RANKING =
5032 "search_min_impressions_for_source_ranking";
5033 /**
5034 * The minimum number of clicks needed to rank a source in GlobalSearch.
5035 * @hide
5036 */
5037 public static final String SEARCH_MIN_CLICKS_FOR_SOURCE_RANKING =
5038 "search_min_clicks_for_source_ranking";
5039 /**
5040 * The maximum number of shortcuts shown by GlobalSearch.
5041 * @hide
5042 */
5043 public static final String SEARCH_MAX_SHORTCUTS_RETURNED = "search_max_shortcuts_returned";
5044 /**
5045 * The size of the core thread pool for suggestion queries in GlobalSearch.
5046 * @hide
5047 */
5048 public static final String SEARCH_QUERY_THREAD_CORE_POOL_SIZE =
5049 "search_query_thread_core_pool_size";
5050 /**
5051 * The maximum size of the thread pool for suggestion queries in GlobalSearch.
5052 * @hide
5053 */
5054 public static final String SEARCH_QUERY_THREAD_MAX_POOL_SIZE =
5055 "search_query_thread_max_pool_size";
5056 /**
5057 * The size of the core thread pool for shortcut refreshing in GlobalSearch.
5058 * @hide
5059 */
5060 public static final String SEARCH_SHORTCUT_REFRESH_CORE_POOL_SIZE =
5061 "search_shortcut_refresh_core_pool_size";
5062 /**
5063 * The maximum size of the thread pool for shortcut refreshing in GlobalSearch.
5064 * @hide
5065 */
5066 public static final String SEARCH_SHORTCUT_REFRESH_MAX_POOL_SIZE =
5067 "search_shortcut_refresh_max_pool_size";
5068 /**
5069 * The maximun time that excess threads in the GlobalSeach thread pools will
5070 * wait before terminating.
5071 * @hide
5072 */
5073 public static final String SEARCH_THREAD_KEEPALIVE_SECONDS =
5074 "search_thread_keepalive_seconds";
5075 /**
5076 * The maximum number of concurrent suggestion queries to each source.
5077 * @hide
5078 */
5079 public static final String SEARCH_PER_SOURCE_CONCURRENT_QUERY_LIMIT =
5080 "search_per_source_concurrent_query_limit";
5081
San Mehat87734d32010-01-08 12:53:06 -08005082 /**
5083 * Whether or not alert sounds are played on MountService events. (0 = false, 1 = true)
5084 * @hide
5085 */
5086 public static final String MOUNT_PLAY_NOTIFICATION_SND = "mount_play_not_snd";
5087
5088 /**
5089 * Whether or not UMS auto-starts on UMS host detection. (0 = false, 1 = true)
5090 * @hide
5091 */
5092 public static final String MOUNT_UMS_AUTOSTART = "mount_ums_autostart";
5093
5094 /**
5095 * Whether or not a notification is displayed on UMS host detection. (0 = false, 1 = true)
5096 * @hide
5097 */
5098 public static final String MOUNT_UMS_PROMPT = "mount_ums_prompt";
5099
5100 /**
5101 * Whether or not a notification is displayed while UMS is enabled. (0 = false, 1 = true)
5102 * @hide
5103 */
5104 public static final String MOUNT_UMS_NOTIFY_ENABLED = "mount_ums_notify_enabled";
Doug Zongkeraed8f8e2010-01-07 18:07:50 -08005105
Dan Egnor42471dd2010-01-07 17:25:22 -08005106 /**
5107 * If nonzero, ANRs in invisible background processes bring up a dialog.
5108 * Otherwise, the process will be silently killed.
5109 * @hide
5110 */
5111 public static final String ANR_SHOW_BACKGROUND = "anr_show_background";
Erikeebc8e22010-02-18 13:27:19 -08005112
Mike LeBeau5d34e9b2010-02-10 19:34:56 -08005113 /**
5114 * The {@link ComponentName} string of the service to be used as the voice recognition
5115 * service.
Erikeebc8e22010-02-18 13:27:19 -08005116 *
Mike LeBeau5d34e9b2010-02-10 19:34:56 -08005117 * @hide
5118 */
5119 public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";
Dan Egnor42471dd2010-01-07 17:25:22 -08005120
William Luh623a4282013-06-24 12:14:18 -07005121 /**
5122 * Stores whether an user has consented to have apps verified through PAM.
5123 * The value is boolean (1 or 0).
5124 *
5125 * @hide
5126 */
5127 public static final String PACKAGE_VERIFIER_USER_CONSENT =
5128 "package_verifier_user_consent";
satok988323c2011-06-22 16:38:13 +09005129
5130 /**
satokada8c4e2011-08-23 14:56:56 +09005131 * The {@link ComponentName} string of the selected spell checker service which is
5132 * one of the services managed by the text service manager.
5133 *
5134 * @hide
5135 */
5136 public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker";
5137
5138 /**
5139 * The {@link ComponentName} string of the selected subtype of the selected spell checker
satok988323c2011-06-22 16:38:13 +09005140 * service which is one of the services managed by the text service manager.
5141 *
5142 * @hide
5143 */
satokada8c4e2011-08-23 14:56:56 +09005144 public static final String SELECTED_SPELL_CHECKER_SUBTYPE =
5145 "selected_spell_checker_subtype";
satok988323c2011-06-22 16:38:13 +09005146
Doug Zongkeraed8f8e2010-01-07 18:07:50 -08005147 /**
satoka33c4fc2011-08-25 16:50:11 +09005148 * The {@link ComponentName} string whether spell checker is enabled or not.
5149 *
5150 * @hide
5151 */
5152 public static final String SPELL_CHECKER_ENABLED = "spell_checker_enabled";
5153
5154 /**
David Brown458e8062010-03-08 21:52:11 -08005155 * What happens when the user presses the Power button while in-call
5156 * and the screen is on.<br/>
5157 * <b>Values:</b><br/>
5158 * 1 - The Power button turns off the screen and locks the device. (Default behavior)<br/>
5159 * 2 - The Power button hangs up the current call.<br/>
5160 *
5161 * @hide
5162 */
5163 public static final String INCALL_POWER_BUTTON_BEHAVIOR = "incall_power_button_behavior";
5164
5165 /**
5166 * INCALL_POWER_BUTTON_BEHAVIOR value for "turn off screen".
5167 * @hide
5168 */
5169 public static final int INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF = 0x1;
5170
5171 /**
5172 * INCALL_POWER_BUTTON_BEHAVIOR value for "hang up".
5173 * @hide
5174 */
5175 public static final int INCALL_POWER_BUTTON_BEHAVIOR_HANGUP = 0x2;
5176
5177 /**
5178 * INCALL_POWER_BUTTON_BEHAVIOR default value.
5179 * @hide
5180 */
5181 public static final int INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT =
5182 INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF;
5183
5184 /**
Jeff Browna20dda42014-05-27 20:57:24 -07005185 * Whether the device should wake when the wake gesture sensor detects motion.
5186 * @hide
5187 */
5188 public static final String WAKE_GESTURE_ENABLED = "wake_gesture_enabled";
5189
5190 /**
John Spurlocka4215ce2014-08-04 14:50:38 -04005191 * Whether the device should doze if configured.
5192 * @hide
5193 */
5194 public static final String DOZE_ENABLED = "doze_enabled";
5195
5196 /**
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07005197 * The current night mode that has been selected by the user. Owned
5198 * and controlled by UiModeManagerService. Constants are as per
5199 * UiModeManager.
5200 * @hide
5201 */
5202 public static final String UI_NIGHT_MODE = "ui_night_mode";
Suchi Amalapurapu40e47252010-04-07 16:15:50 -07005203
5204 /**
John Spurlock1a868b72012-08-22 09:56:51 -04005205 * Whether screensavers are enabled.
Daniel Sandler0601eb72011-04-13 01:01:32 -04005206 * @hide
5207 */
Daniel Sandler2d545362011-11-17 10:38:37 -08005208 public static final String SCREENSAVER_ENABLED = "screensaver_enabled";
Daniel Sandler0601eb72011-04-13 01:01:32 -04005209
5210 /**
John Spurlock1a868b72012-08-22 09:56:51 -04005211 * The user's chosen screensaver components.
Daniel Sandler2d545362011-11-17 10:38:37 -08005212 *
John Spurlock1a868b72012-08-22 09:56:51 -04005213 * These will be launched by the PhoneWindowManager after a timeout when not on
Daniel Sandler2d545362011-11-17 10:38:37 -08005214 * battery, or upon dock insertion (if SCREENSAVER_ACTIVATE_ON_DOCK is set to 1).
Daniel Sandler0601eb72011-04-13 01:01:32 -04005215 * @hide
5216 */
John Spurlock1a868b72012-08-22 09:56:51 -04005217 public static final String SCREENSAVER_COMPONENTS = "screensaver_components";
Daniel Sandler2d545362011-11-17 10:38:37 -08005218
5219 /**
John Spurlock1a868b72012-08-22 09:56:51 -04005220 * If screensavers are enabled, whether the screensaver should be automatically launched
5221 * when the device is inserted into a (desk) dock.
Daniel Sandler2d545362011-11-17 10:38:37 -08005222 * @hide
5223 */
5224 public static final String SCREENSAVER_ACTIVATE_ON_DOCK = "screensaver_activate_on_dock";
Daniel Sandler0601eb72011-04-13 01:01:32 -04005225
John Spurlock1a868b72012-08-22 09:56:51 -04005226 /**
5227 * If screensavers are enabled, whether the screensaver should be automatically launched
5228 * when the screen times out when not on battery.
5229 * @hide
5230 */
5231 public static final String SCREENSAVER_ACTIVATE_ON_SLEEP = "screensaver_activate_on_sleep";
5232
5233 /**
5234 * If screensavers are enabled, the default screensaver component.
5235 * @hide
5236 */
5237 public static final String SCREENSAVER_DEFAULT_COMPONENT = "screensaver_default_component";
5238
Daniel Sandler0601eb72011-04-13 01:01:32 -04005239 /**
Martijn Coenena7397882013-07-30 20:07:47 -07005240 * The default NFC payment component
5241 * @hide
5242 */
5243 public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component";
5244
5245 /**
Martijn Coenen2f6f3a012014-04-25 17:00:21 -07005246 * Whether NFC payment is handled by the foreground application or a default.
5247 * @hide
5248 */
5249 public static final String NFC_PAYMENT_FOREGROUND = "nfc_payment_foreground";
5250
5251 /**
David Braunf5d83192013-09-16 13:43:51 -07005252 * Specifies the package name currently configured to be the primary sms application
5253 * @hide
5254 */
5255 public static final String SMS_DEFAULT_APPLICATION = "sms_default_application";
5256
5257 /**
Chris Wren8326a8a2014-10-22 14:13:32 -04005258 * Names of the packages that the current user has explicitly allowed to
5259 * see all of the user's notifications, separated by ':'.
Daniel Sandler4b749ef2013-03-18 21:53:04 -04005260 *
5261 * @hide
5262 */
5263 public static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners";
5264
John Spurlock7340fc82014-04-24 18:50:12 -04005265 /**
5266 * @hide
5267 */
5268 public static final String ENABLED_CONDITION_PROVIDERS = "enabled_condition_providers";
5269
John Spurlock5c454122013-06-17 07:35:46 -04005270 /** @hide */
5271 public static final String BAR_SERVICE_COMPONENT = "bar_service_component";
5272
John Spurlockd67ec252013-09-05 11:31:54 -04005273 /** @hide */
John Spurlockcdb57ae2015-02-11 19:04:11 -05005274 public static final String VOLUME_CONTROLLER_SERVICE_COMPONENT
5275 = "volume_controller_service_component";
5276
5277 /** @hide */
John Spurlockf1a36642013-10-12 17:50:42 -04005278 public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations";
John Spurlockd67ec252013-09-05 11:31:54 -04005279
Yorke Lee647f8f32013-05-07 10:49:44 -07005280 /**
Svetoslavf43e8512013-09-30 17:33:05 -07005281 * This is the query URI for finding a print service to install.
5282 *
5283 * @hide
5284 */
5285 public static final String PRINT_SERVICE_SEARCH_URI = "print_service_search_uri";
5286
5287 /**
5288 * This is the query URI for finding a NFC payment service to install.
5289 *
5290 * @hide
5291 */
5292 public static final String PAYMENT_SERVICE_SEARCH_URI = "payment_service_search_uri";
5293
5294 /**
Amith Yamasani1e9c2182014-06-11 17:25:51 -07005295 * If enabled, apps should try to skip any introductory hints on first launch. This might
Amith Yamasani0c416392014-06-13 15:54:39 -07005296 * apply to users that are already familiar with the environment or temporary users.
Amith Yamasani1e9c2182014-06-11 17:25:51 -07005297 * <p>
5298 * Type : int (0 to show hints, 1 to skip showing hints)
Amith Yamasani1e9c2182014-06-11 17:25:51 -07005299 */
5300 public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
5301
5302 /**
John Spurlockaa5ee4d2014-07-25 13:05:12 -04005303 * Persisted playback time after a user confirmation of an unsafe volume level.
5304 *
5305 * @hide
5306 */
5307 public static final String UNSAFE_VOLUME_MUSIC_ACTIVE_MS = "unsafe_volume_music_active_ms";
5308
5309 /**
Dan Sandler52e5701e2014-07-22 23:14:54 -04005310 * This preference enables notification display on the lockscreen.
5311 * @hide
5312 */
5313 public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS =
5314 "lock_screen_show_notifications";
5315
5316 /**
Dongwon Kang4d933a02014-08-07 22:51:47 -07005317 * List of TV inputs that are currently hidden. This is a string
Jaewan Kimf0e530e2014-08-22 00:43:31 +09005318 * containing the IDs of all hidden TV inputs. Each ID is encoded by
5319 * {@link android.net.Uri#encode(String)} and separated by ':'.
Dongwon Kang4d933a02014-08-07 22:51:47 -07005320 * @hide
5321 */
5322 public static final String TV_INPUT_HIDDEN_INPUTS = "tv_input_hidden_inputs";
5323
5324 /**
5325 * List of custom TV input labels. This is a string containing <TV input id, custom name>
Jaewan Kimf0e530e2014-08-22 00:43:31 +09005326 * pairs. TV input id and custom name are encoded by {@link android.net.Uri#encode(String)}
5327 * and separated by ','. Each pair is separated by ':'.
Dongwon Kang4d933a02014-08-07 22:51:47 -07005328 * @hide
5329 */
5330 public static final String TV_INPUT_CUSTOM_LABELS = "tv_input_custom_labels";
5331
5332 /**
Glenn Kasten34cc4db2014-08-13 10:56:38 -07005333 * Whether automatic routing of system audio to USB audio peripheral is disabled.
5334 * The value is boolean (1 or 0), where 1 means automatic routing is disabled,
5335 * and 0 means automatic routing is enabled.
5336 *
5337 * @hide
5338 */
5339 public static final String USB_AUDIO_AUTOMATIC_ROUTING_DISABLED =
5340 "usb_audio_automatic_routing_disabled";
5341
5342 /**
Jeff Brown05af6ad2014-09-30 20:54:30 -07005343 * The timeout in milliseconds before the device fully goes to sleep after
5344 * a period of inactivity. This value sets an upper bound on how long the device
5345 * will stay awake or dreaming without user activity. It should generally
Dianne Hackbornad6a99b2014-11-18 10:11:10 -08005346 * be longer than {@link Settings.System#SCREEN_OFF_TIMEOUT} as otherwise the device
Jeff Brown05af6ad2014-09-30 20:54:30 -07005347 * will sleep before it ever has a chance to dream.
5348 * <p>
5349 * Use -1 to disable this timeout.
5350 * </p>
5351 *
5352 * @hide
5353 */
5354 public static final String SLEEP_TIMEOUT = "sleep_timeout";
5355
5356 /**
Svetoslav Ganova571a582011-09-20 18:32:20 -07005357 * This are the settings to be backed up.
5358 *
5359 * NOTE: Settings are backed up and restored in the order they appear
5360 * in this array. If you have one setting depending on another,
5361 * make sure that they are ordered appropriately.
5362 *
-b master501eec92009-07-06 13:53:11 -07005363 * @hide
5364 */
5365 public static final String[] SETTINGS_TO_BACKUP = {
Christopher Tate58f41ec2013-01-11 15:40:36 -08005366 BUGREPORT_IN_POWER_MENU, // moved to global
Amith Yamasani8823c0a82009-07-07 14:30:17 -07005367 ALLOW_MOCK_LOCATION,
-b master501eec92009-07-06 13:53:11 -07005368 PARENTAL_CONTROL_ENABLED,
5369 PARENTAL_CONTROL_REDIRECT_URL,
Christopher Tate66488d62012-10-02 11:58:01 -07005370 USB_MASS_STORAGE_ENABLED, // moved to global
Svetoslav Ganov1cf70bb2012-08-06 10:53:34 -07005371 ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
5372 ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE,
5373 ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE,
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07005374 ACCESSIBILITY_SCRIPT_INJECTION,
Christopher Tate14c2d792010-02-25 16:49:44 -08005375 BACKUP_AUTO_RESTORE,
-b master501eec92009-07-06 13:53:11 -07005376 ENABLED_ACCESSIBILITY_SERVICES,
Svetoslav Ganov9a4c5cd2012-05-30 14:06:32 -07005377 TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
Svetoslav Ganova28a16d2011-07-28 11:24:21 -07005378 TOUCH_EXPLORATION_ENABLED,
Svetoslav Ganova571a582011-09-20 18:32:20 -07005379 ACCESSIBILITY_ENABLED,
Svetoslav Ganov55f937a2011-12-05 11:42:07 -08005380 ACCESSIBILITY_SPEAK_PASSWORD,
Chris Craikcce47eb2014-07-16 15:12:15 -07005381 ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED,
Alan Viveretteef793802013-07-23 14:15:28 -07005382 ACCESSIBILITY_CAPTIONING_ENABLED,
5383 ACCESSIBILITY_CAPTIONING_LOCALE,
5384 ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR,
5385 ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR,
5386 ACCESSIBILITY_CAPTIONING_EDGE_TYPE,
5387 ACCESSIBILITY_CAPTIONING_EDGE_COLOR,
5388 ACCESSIBILITY_CAPTIONING_TYPEFACE,
Alan Viverette69ce69b2013-08-29 12:23:48 -07005389 ACCESSIBILITY_CAPTIONING_FONT_SCALE,
-b master501eec92009-07-06 13:53:11 -07005390 TTS_USE_DEFAULTS,
5391 TTS_DEFAULT_RATE,
5392 TTS_DEFAULT_PITCH,
5393 TTS_DEFAULT_SYNTH,
5394 TTS_DEFAULT_LANG,
5395 TTS_DEFAULT_COUNTRY,
Charles Chenceffa152010-03-16 21:18:10 -07005396 TTS_ENABLED_PLUGINS,
Narayan Kamath6d632962011-08-24 11:51:37 +01005397 TTS_DEFAULT_LOCALE,
Christopher Tate66488d62012-10-02 11:58:01 -07005398 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, // moved to global
5399 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, // moved to global
5400 WIFI_NUM_OPEN_NETWORKS_KEPT, // moved to global
Christopher Tate06cbadd2015-03-16 18:29:42 -07005401 SELECTED_SPELL_CHECKER,
5402 SELECTED_SPELL_CHECKER_SUBTYPE,
5403 SPELL_CHECKER_ENABLED,
San Mehat87734d32010-01-08 12:53:06 -08005404 MOUNT_PLAY_NOTIFICATION_SND,
5405 MOUNT_UMS_AUTOSTART,
5406 MOUNT_UMS_PROMPT,
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07005407 MOUNT_UMS_NOTIFY_ENABLED,
Jeff Brown05af6ad2014-09-30 20:54:30 -07005408 UI_NIGHT_MODE,
5409 SLEEP_TIMEOUT
-b master501eec92009-07-06 13:53:11 -07005410 };
5411
5412 /**
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07005413 * These entries are considered common between the personal and the managed profile,
5414 * since the managed profile doesn't get to change them.
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07005415 */
Svetoslav683914b2015-01-15 14:22:26 -08005416 private static final Set<String> CLONE_TO_MANAGED_PROFILE = new ArraySet<>();
5417 static {
5418 CLONE_TO_MANAGED_PROFILE.add(ACCESSIBILITY_ENABLED);
5419 CLONE_TO_MANAGED_PROFILE.add(ALLOW_MOCK_LOCATION);
5420 CLONE_TO_MANAGED_PROFILE.add(ALLOWED_GEOLOCATION_ORIGINS);
5421 CLONE_TO_MANAGED_PROFILE.add(DEFAULT_INPUT_METHOD);
5422 CLONE_TO_MANAGED_PROFILE.add(ENABLED_ACCESSIBILITY_SERVICES);
5423 CLONE_TO_MANAGED_PROFILE.add(ENABLED_INPUT_METHODS);
5424 CLONE_TO_MANAGED_PROFILE.add(LOCATION_MODE);
5425 CLONE_TO_MANAGED_PROFILE.add(LOCATION_PROVIDERS_ALLOWED);
5426 CLONE_TO_MANAGED_PROFILE.add(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
5427 CLONE_TO_MANAGED_PROFILE.add(SELECTED_INPUT_METHOD_SUBTYPE);
5428 CLONE_TO_MANAGED_PROFILE.add(SELECTED_SPELL_CHECKER);
5429 CLONE_TO_MANAGED_PROFILE.add(SELECTED_SPELL_CHECKER_SUBTYPE);
5430 }
5431
5432 /** @hide */
5433 public static void getCloneToManagedProfileSettings(Set<String> outKeySet) {
5434 outKeySet.addAll(CLONE_TO_MANAGED_PROFILE);
5435 }
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07005436
5437 /**
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005438 * Helper method for determining if a location provider is enabled.
Tom O'Neilld5759432013-09-11 11:03:03 -07005439 *
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005440 * @param cr the content resolver to use
5441 * @param provider the location provider to query
5442 * @return true if the provider is enabled
Tom O'Neilld5759432013-09-11 11:03:03 -07005443 *
5444 * @deprecated use {@link #LOCATION_MODE} or
5445 * {@link LocationManager#isProviderEnabled(String)}
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005446 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005447 @Deprecated
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005448 public static final boolean isLocationProviderEnabled(ContentResolver cr, String provider) {
Victoria Leaseb711d572012-10-02 13:14:11 -07005449 return isLocationProviderEnabledForUser(cr, provider, UserHandle.myUserId());
5450 }
5451
5452 /**
5453 * Helper method for determining if a location provider is enabled.
5454 * @param cr the content resolver to use
5455 * @param provider the location provider to query
5456 * @param userId the userId to query
5457 * @return true if the provider is enabled
Tom O'Neilld5759432013-09-11 11:03:03 -07005458 * @deprecated use {@link #LOCATION_MODE} or
5459 * {@link LocationManager#isProviderEnabled(String)}
Victoria Leaseb711d572012-10-02 13:14:11 -07005460 * @hide
5461 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005462 @Deprecated
Victoria Leaseb711d572012-10-02 13:14:11 -07005463 public static final boolean isLocationProviderEnabledForUser(ContentResolver cr, String provider, int userId) {
5464 String allowedProviders = Settings.Secure.getStringForUser(cr,
5465 LOCATION_PROVIDERS_ALLOWED, userId);
Brad Fitzpatrick11fe1812010-09-10 16:07:52 -07005466 return TextUtils.delimitedStringContains(allowedProviders, ',', provider);
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005467 }
5468
5469 /**
5470 * Thread-safe method for enabling or disabling a single location provider.
5471 * @param cr the content resolver to use
5472 * @param provider the location provider to enable or disable
5473 * @param enabled true if the provider should be enabled
Tom O'Neilla324ac72013-08-26 14:40:23 -07005474 * @deprecated use {@link #putInt(ContentResolver, String, int)} and {@link #LOCATION_MODE}
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005475 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005476 @Deprecated
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005477 public static final void setLocationProviderEnabled(ContentResolver cr,
5478 String provider, boolean enabled) {
Victoria Leaseb711d572012-10-02 13:14:11 -07005479 setLocationProviderEnabledForUser(cr, provider, enabled, UserHandle.myUserId());
5480 }
5481
5482 /**
5483 * Thread-safe method for enabling or disabling a single location provider.
Tom O'Neilla324ac72013-08-26 14:40:23 -07005484 *
Victoria Leaseb711d572012-10-02 13:14:11 -07005485 * @param cr the content resolver to use
5486 * @param provider the location provider to enable or disable
5487 * @param enabled true if the provider should be enabled
5488 * @param userId the userId for which to enable/disable providers
Tom O'Neilla324ac72013-08-26 14:40:23 -07005489 * @return true if the value was set, false on database errors
5490 * @deprecated use {@link #putIntForUser(ContentResolver, String, int, int)} and
5491 * {@link #LOCATION_MODE}
Victoria Leaseb711d572012-10-02 13:14:11 -07005492 * @hide
5493 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005494 @Deprecated
Tom O'Neilla324ac72013-08-26 14:40:23 -07005495 public static final boolean setLocationProviderEnabledForUser(ContentResolver cr,
Victoria Leaseb711d572012-10-02 13:14:11 -07005496 String provider, boolean enabled, int userId) {
David Christie3f7b6522013-08-06 19:19:08 -07005497 synchronized (mLocationSettingsLock) {
5498 // to ensure thread safety, we write the provider name with a '+' or '-'
5499 // and let the SettingsProvider handle it rather than reading and modifying
5500 // the list of enabled providers.
5501 if (enabled) {
5502 provider = "+" + provider;
5503 } else {
5504 provider = "-" + provider;
5505 }
Tom O'Neilla324ac72013-08-26 14:40:23 -07005506 return putStringForUser(cr, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, provider,
David Christie3f7b6522013-08-06 19:19:08 -07005507 userId);
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005508 }
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005509 }
Tom O'Neill1f48b782013-08-19 18:14:56 -07005510
5511 /**
5512 * Thread-safe method for setting the location mode to one of
5513 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY},
5514 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}.
5515 *
Tom O'Neill1f48b782013-08-19 18:14:56 -07005516 * @param cr the content resolver to use
5517 * @param mode such as {@link #LOCATION_MODE_HIGH_ACCURACY}
5518 * @param userId the userId for which to change mode
Tom O'Neilla324ac72013-08-26 14:40:23 -07005519 * @return true if the value was set, false on database errors
Tom O'Neill1f48b782013-08-19 18:14:56 -07005520 *
5521 * @throws IllegalArgumentException if mode is not one of the supported values
5522 */
Tom O'Neill7f6f4572013-08-27 10:53:15 -07005523 private static final boolean setLocationModeForUser(ContentResolver cr, int mode,
5524 int userId) {
Tom O'Neill1f48b782013-08-19 18:14:56 -07005525 synchronized (mLocationSettingsLock) {
5526 boolean gps = false;
5527 boolean network = false;
5528 switch (mode) {
5529 case LOCATION_MODE_OFF:
5530 break;
5531 case LOCATION_MODE_SENSORS_ONLY:
5532 gps = true;
5533 break;
5534 case LOCATION_MODE_BATTERY_SAVING:
5535 network = true;
5536 break;
5537 case LOCATION_MODE_HIGH_ACCURACY:
5538 gps = true;
5539 network = true;
5540 break;
5541 default:
5542 throw new IllegalArgumentException("Invalid location mode: " + mode);
5543 }
Tom O'Neill7731a992014-10-09 11:30:49 -07005544 // Note it's important that we set the NLP mode first. The Google implementation
5545 // of NLP clears its NLP consent setting any time it receives a
5546 // LocationManager.PROVIDERS_CHANGED_ACTION broadcast and NLP is disabled. Also,
5547 // it shows an NLP consent dialog any time it receives the broadcast, NLP is
5548 // enabled, and the NLP consent is not set. If 1) we were to enable GPS first,
5549 // 2) a setup wizard has its own NLP consent UI that sets the NLP consent setting,
5550 // and 3) the receiver happened to complete before we enabled NLP, then the Google
5551 // NLP would detect the attempt to enable NLP and show a redundant NLP consent
5552 // dialog. Then the people who wrote the setup wizard would be sad.
Tom O'Neilla324ac72013-08-26 14:40:23 -07005553 boolean nlpSuccess = Settings.Secure.setLocationProviderEnabledForUser(
Tom O'Neill1f48b782013-08-19 18:14:56 -07005554 cr, LocationManager.NETWORK_PROVIDER, network, userId);
Tom O'Neill7731a992014-10-09 11:30:49 -07005555 boolean gpsSuccess = Settings.Secure.setLocationProviderEnabledForUser(
5556 cr, LocationManager.GPS_PROVIDER, gps, userId);
Tom O'Neilla324ac72013-08-26 14:40:23 -07005557 return gpsSuccess && nlpSuccess;
Tom O'Neill1f48b782013-08-19 18:14:56 -07005558 }
5559 }
5560
5561 /**
Tom O'Neill1f48b782013-08-19 18:14:56 -07005562 * Thread-safe method for reading the location mode, returns one of
5563 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY},
5564 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}.
5565 *
5566 * @param cr the content resolver to use
5567 * @param userId the userId for which to read the mode
5568 * @return the location mode
5569 */
Tom O'Neill7f6f4572013-08-27 10:53:15 -07005570 private static final int getLocationModeForUser(ContentResolver cr, int userId) {
Tom O'Neill1f48b782013-08-19 18:14:56 -07005571 synchronized (mLocationSettingsLock) {
5572 boolean gpsEnabled = Settings.Secure.isLocationProviderEnabledForUser(
5573 cr, LocationManager.GPS_PROVIDER, userId);
5574 boolean networkEnabled = Settings.Secure.isLocationProviderEnabledForUser(
5575 cr, LocationManager.NETWORK_PROVIDER, userId);
5576 if (gpsEnabled && networkEnabled) {
5577 return LOCATION_MODE_HIGH_ACCURACY;
5578 } else if (gpsEnabled) {
5579 return LOCATION_MODE_SENSORS_ONLY;
5580 } else if (networkEnabled) {
5581 return LOCATION_MODE_BATTERY_SAVING;
5582 } else {
5583 return LOCATION_MODE_OFF;
5584 }
5585 }
5586 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08005587 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07005588
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08005589 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005590 * Global system settings, containing preferences that always apply identically
5591 * to all defined users. Applications can read these but are not allowed to write;
5592 * like the "Secure" settings, these are for preferences that the user must
5593 * explicitly modify through the system UI or specialized APIs for those values.
5594 */
5595 public static final class Global extends NameValueTable {
5596 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_global_version";
5597
5598 /**
5599 * The content:// style URL for global secure settings items. Not public.
5600 */
5601 public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/global");
5602
5603 /**
Amith Yamasani23a0f052014-07-25 12:26:53 -07005604 * Whether users are allowed to add more users or guest from lockscreen.
5605 * <p>
5606 * Type: int
5607 * @hide
5608 */
5609 public static final String ADD_USERS_WHEN_LOCKED = "add_users_when_locked";
5610
5611 /**
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07005612 * Setting whether the global gesture for enabling accessibility is enabled.
5613 * If this gesture is enabled the user will be able to perfrom it to enable
5614 * the accessibility state without visiting the settings app.
5615 * @hide
5616 */
5617 public static final String ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED =
5618 "enable_accessibility_global_gesture_enabled";
5619
5620 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005621 * Whether Airplane Mode is on.
5622 */
5623 public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
5624
5625 /**
Bryce Lee584a4452014-10-21 15:55:55 -07005626 * Whether Theater Mode is on.
5627 * {@hide}
5628 */
Bryce Leecdfebd62015-02-02 08:19:11 -08005629 @SystemApi
Bryce Lee584a4452014-10-21 15:55:55 -07005630 public static final String THEATER_MODE_ON = "theater_mode_on";
5631
5632 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005633 * Constant for use in AIRPLANE_MODE_RADIOS to specify Bluetooth radio.
5634 */
5635 public static final String RADIO_BLUETOOTH = "bluetooth";
5636
5637 /**
5638 * Constant for use in AIRPLANE_MODE_RADIOS to specify Wi-Fi radio.
5639 */
5640 public static final String RADIO_WIFI = "wifi";
5641
5642 /**
5643 * {@hide}
5644 */
5645 public static final String RADIO_WIMAX = "wimax";
5646 /**
5647 * Constant for use in AIRPLANE_MODE_RADIOS to specify Cellular radio.
5648 */
5649 public static final String RADIO_CELL = "cell";
5650
5651 /**
5652 * Constant for use in AIRPLANE_MODE_RADIOS to specify NFC radio.
5653 */
5654 public static final String RADIO_NFC = "nfc";
5655
5656 /**
5657 * A comma separated list of radios that need to be disabled when airplane mode
5658 * is on. This overrides WIFI_ON and BLUETOOTH_ON, if Wi-Fi and bluetooth are
5659 * included in the comma separated list.
5660 */
5661 public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
5662
5663 /**
5664 * A comma separated list of radios that should to be disabled when airplane mode
5665 * is on, but can be manually reenabled by the user. For example, if RADIO_WIFI is
5666 * added to both AIRPLANE_MODE_RADIOS and AIRPLANE_MODE_TOGGLEABLE_RADIOS, then Wifi
5667 * will be turned off when entering airplane mode, but the user will be able to reenable
5668 * Wifi in the Settings app.
5669 *
5670 * {@hide}
5671 */
5672 public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios";
5673
5674 /**
5675 * The policy for deciding when Wi-Fi should go to sleep (which will in
5676 * turn switch to using the mobile data as an Internet connection).
5677 * <p>
5678 * Set to one of {@link #WIFI_SLEEP_POLICY_DEFAULT},
5679 * {@link #WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED}, or
5680 * {@link #WIFI_SLEEP_POLICY_NEVER}.
5681 */
5682 public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
5683
5684 /**
5685 * Value for {@link #WIFI_SLEEP_POLICY} to use the default Wi-Fi sleep
5686 * policy, which is to sleep shortly after the turning off
5687 * according to the {@link #STAY_ON_WHILE_PLUGGED_IN} setting.
5688 */
5689 public static final int WIFI_SLEEP_POLICY_DEFAULT = 0;
5690
5691 /**
5692 * Value for {@link #WIFI_SLEEP_POLICY} to use the default policy when
5693 * the device is on battery, and never go to sleep when the device is
5694 * plugged in.
5695 */
5696 public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1;
5697
5698 /**
5699 * Value for {@link #WIFI_SLEEP_POLICY} to never go to sleep.
5700 */
5701 public static final int WIFI_SLEEP_POLICY_NEVER = 2;
5702
5703 /**
5704 * Value to specify if the user prefers the date, time and time zone
5705 * to be automatically fetched from the network (NITZ). 1=yes, 0=no
5706 */
5707 public static final String AUTO_TIME = "auto_time";
5708
5709 /**
5710 * Value to specify if the user prefers the time zone
5711 * to be automatically fetched from the network (NITZ). 1=yes, 0=no
5712 */
5713 public static final String AUTO_TIME_ZONE = "auto_time_zone";
5714
5715 /**
5716 * URI for the car dock "in" event sound.
5717 * @hide
5718 */
5719 public static final String CAR_DOCK_SOUND = "car_dock_sound";
5720
5721 /**
5722 * URI for the car dock "out" event sound.
5723 * @hide
5724 */
5725 public static final String CAR_UNDOCK_SOUND = "car_undock_sound";
5726
5727 /**
5728 * URI for the desk dock "in" event sound.
5729 * @hide
5730 */
5731 public static final String DESK_DOCK_SOUND = "desk_dock_sound";
5732
5733 /**
5734 * URI for the desk dock "out" event sound.
5735 * @hide
5736 */
5737 public static final String DESK_UNDOCK_SOUND = "desk_undock_sound";
5738
5739 /**
5740 * Whether to play a sound for dock events.
5741 * @hide
5742 */
5743 public static final String DOCK_SOUNDS_ENABLED = "dock_sounds_enabled";
5744
5745 /**
5746 * URI for the "device locked" (keyguard shown) sound.
5747 * @hide
5748 */
5749 public static final String LOCK_SOUND = "lock_sound";
5750
5751 /**
5752 * URI for the "device unlocked" sound.
5753 * @hide
5754 */
5755 public static final String UNLOCK_SOUND = "unlock_sound";
5756
5757 /**
Adrian Roos49e057d2014-08-13 17:14:51 +02005758 * URI for the "device is trusted" sound, which is played when the device enters the trusted
5759 * state without unlocking.
5760 * @hide
5761 */
5762 public static final String TRUSTED_SOUND = "trusted_sound";
5763
5764 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005765 * URI for the low battery sound file.
5766 * @hide
5767 */
5768 public static final String LOW_BATTERY_SOUND = "low_battery_sound";
5769
5770 /**
5771 * Whether to play a sound for low-battery alerts.
5772 * @hide
5773 */
5774 public static final String POWER_SOUNDS_ENABLED = "power_sounds_enabled";
5775
5776 /**
Jeff Brown84e27562012-12-07 13:56:34 -08005777 * URI for the "wireless charging started" sound.
5778 * @hide
5779 */
5780 public static final String WIRELESS_CHARGING_STARTED_SOUND =
5781 "wireless_charging_started_sound";
5782
5783 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005784 * Whether we keep the device on while the device is plugged in.
5785 * Supported values are:
5786 * <ul>
5787 * <li>{@code 0} to never stay on while plugged in</li>
5788 * <li>{@link BatteryManager#BATTERY_PLUGGED_AC} to stay on for AC charger</li>
5789 * <li>{@link BatteryManager#BATTERY_PLUGGED_USB} to stay on for USB charger</li>
5790 * <li>{@link BatteryManager#BATTERY_PLUGGED_WIRELESS} to stay on for wireless charger</li>
5791 * </ul>
5792 * These values can be OR-ed together.
5793 */
5794 public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
5795
5796 /**
Christopher Tate58f41ec2013-01-11 15:40:36 -08005797 * When the user has enable the option to have a "bug report" command
5798 * in the power menu.
5799 * @hide
5800 */
5801 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu";
5802
5803 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005804 * Whether ADB is enabled.
5805 */
5806 public static final String ADB_ENABLED = "adb_enabled";
5807
5808 /**
Jon Miranda836c0a82014-08-11 12:32:26 -07005809 * Whether Views are allowed to save their attribute data.
5810 * @hide
5811 */
5812 public static final String DEBUG_VIEW_ATTRIBUTES = "debug_view_attributes";
5813
5814 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005815 * Whether assisted GPS should be enabled or not.
5816 * @hide
5817 */
5818 public static final String ASSISTED_GPS_ENABLED = "assisted_gps_enabled";
5819
5820 /**
5821 * Whether bluetooth is enabled/disabled
5822 * 0=disabled. 1=enabled.
5823 */
5824 public static final String BLUETOOTH_ON = "bluetooth_on";
5825
5826 /**
5827 * CDMA Cell Broadcast SMS
5828 * 0 = CDMA Cell Broadcast SMS disabled
5829 * 1 = CDMA Cell Broadcast SMS enabled
5830 * @hide
5831 */
5832 public static final String CDMA_CELL_BROADCAST_SMS =
5833 "cdma_cell_broadcast_sms";
5834
5835 /**
5836 * The CDMA roaming mode 0 = Home Networks, CDMA default
5837 * 1 = Roaming on Affiliated networks
5838 * 2 = Roaming on any networks
5839 * @hide
5840 */
5841 public static final String CDMA_ROAMING_MODE = "roaming_settings";
5842
5843 /**
5844 * The CDMA subscription mode 0 = RUIM/SIM (default)
5845 * 1 = NV
5846 * @hide
5847 */
5848 public static final String CDMA_SUBSCRIPTION_MODE = "subscription_mode";
5849
5850 /** Inactivity timeout to track mobile data activity.
5851 *
5852 * If set to a positive integer, it indicates the inactivity timeout value in seconds to
5853 * infer the data activity of mobile network. After a period of no activity on mobile
5854 * networks with length specified by the timeout, an {@code ACTION_DATA_ACTIVITY_CHANGE}
5855 * intent is fired to indicate a transition of network status from "active" to "idle". Any
5856 * subsequent activity on mobile networks triggers the firing of {@code
5857 * ACTION_DATA_ACTIVITY_CHANGE} intent indicating transition from "idle" to "active".
5858 *
5859 * Network activity refers to transmitting or receiving data on the network interfaces.
5860 *
5861 * Tracking is disabled if set to zero or negative value.
5862 *
5863 * @hide
5864 */
5865 public static final String DATA_ACTIVITY_TIMEOUT_MOBILE = "data_activity_timeout_mobile";
5866
5867 /** Timeout to tracking Wifi data activity. Same as {@code DATA_ACTIVITY_TIMEOUT_MOBILE}
5868 * but for Wifi network.
5869 * @hide
5870 */
5871 public static final String DATA_ACTIVITY_TIMEOUT_WIFI = "data_activity_timeout_wifi";
5872
5873 /**
5874 * Whether or not data roaming is enabled. (0 = false, 1 = true)
5875 */
5876 public static final String DATA_ROAMING = "data_roaming";
5877
5878 /**
Wink Saville75c1e692013-03-20 17:06:50 -07005879 * The value passed to a Mobile DataConnection via bringUp which defines the
5880 * number of retries to preform when setting up the initial connection. The default
5881 * value defined in DataConnectionTrackerBase#DEFAULT_MDC_INITIAL_RETRY is currently 1.
5882 * @hide
5883 */
5884 public static final String MDC_INITIAL_MAX_RETRY = "mdc_initial_max_retry";
5885
5886 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005887 * Whether user has enabled development settings.
5888 */
5889 public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
5890
5891 /**
5892 * Whether the device has been provisioned (0 = false, 1 = true)
5893 */
5894 public static final String DEVICE_PROVISIONED = "device_provisioned";
5895
5896 /**
5897 * The saved value for WindowManagerService.setForcedDisplayDensity().
5898 * One integer in dpi. If unset, then use the real display density.
5899 * @hide
5900 */
5901 public static final String DISPLAY_DENSITY_FORCED = "display_density_forced";
5902
5903 /**
5904 * The saved value for WindowManagerService.setForcedDisplaySize().
5905 * Two integers separated by a comma. If unset, then use the real display size.
5906 * @hide
5907 */
5908 public static final String DISPLAY_SIZE_FORCED = "display_size_forced";
5909
5910 /**
5911 * The maximum size, in bytes, of a download that the download manager will transfer over
5912 * a non-wifi connection.
5913 * @hide
5914 */
5915 public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE =
5916 "download_manager_max_bytes_over_mobile";
5917
5918 /**
5919 * The recommended maximum size, in bytes, of a download that the download manager should
5920 * transfer over a non-wifi connection. Over this size, the use will be warned, but will
5921 * have the option to start the download over the mobile connection anyway.
5922 * @hide
5923 */
5924 public static final String DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE =
5925 "download_manager_recommended_max_bytes_over_mobile";
5926
5927 /**
Christopher Tateaa036a22014-05-19 16:33:27 -07005928 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead
Christopher Tate06efb532012-08-24 15:29:27 -07005929 */
Christopher Tateaa036a22014-05-19 16:33:27 -07005930 @Deprecated
5931 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS;
Christopher Tate06efb532012-08-24 15:29:27 -07005932
5933 /**
Jinsuk Kimb3d91772014-07-10 12:48:54 +09005934 * Whether HDMI control shall be enabled. If disabled, no CEC/MHL command will be
5935 * sent or processed. (0 = false, 1 = true)
5936 * @hide
5937 */
5938 public static final String HDMI_CONTROL_ENABLED = "hdmi_control_enabled";
5939
5940 /**
5941 * Whether HDMI system audio is enabled. If enabled, TV internal speaker is muted,
5942 * and the output is redirected to AV Receiver connected via
5943 * {@Global#HDMI_SYSTEM_AUDIO_OUTPUT}.
5944 * @hide
5945 */
5946 public static final String HDMI_SYSTEM_AUDIO_ENABLED = "hdmi_system_audio_enabled";
5947
5948 /**
Jinsuk Kimb3d91772014-07-10 12:48:54 +09005949 * Whether TV will automatically turn on upon reception of the CEC command
5950 * &lt;Text View On&gt; or &lt;Image View On&gt;. (0 = false, 1 = true)
5951 * @hide
5952 */
5953 public static final String HDMI_CONTROL_AUTO_WAKEUP_ENABLED =
5954 "hdmi_control_auto_wakeup_enabled";
5955
5956 /**
5957 * Whether TV will also turn off other CEC devices when it goes to standby mode.
5958 * (0 = false, 1 = true)
5959 * @hide
5960 */
5961 public static final String HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED =
5962 "hdmi_control_auto_device_off_enabled";
5963
5964 /**
5965 * Whether TV will switch to MHL port when a mobile device is plugged in.
5966 * (0 = false, 1 = true)
5967 * @hide
5968 */
5969 public static final String MHL_INPUT_SWITCHING_ENABLED = "mhl_input_switching_enabled";
5970
5971 /**
5972 * Whether TV will charge the mobile device connected at MHL port. (0 = false, 1 = true)
5973 * @hide
5974 */
5975 public static final String MHL_POWER_CHARGE_ENABLED = "mhl_power_charge_enabled";
5976
5977 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005978 * Whether mobile data connections are allowed by the user. See
5979 * ConnectivityManager for more info.
5980 * @hide
5981 */
5982 public static final String MOBILE_DATA = "mobile_data";
5983
5984 /** {@hide} */
5985 public static final String NETSTATS_ENABLED = "netstats_enabled";
5986 /** {@hide} */
5987 public static final String NETSTATS_POLL_INTERVAL = "netstats_poll_interval";
5988 /** {@hide} */
5989 public static final String NETSTATS_TIME_CACHE_MAX_AGE = "netstats_time_cache_max_age";
5990 /** {@hide} */
5991 public static final String NETSTATS_GLOBAL_ALERT_BYTES = "netstats_global_alert_bytes";
5992 /** {@hide} */
5993 public static final String NETSTATS_SAMPLE_ENABLED = "netstats_sample_enabled";
Christopher Tate06efb532012-08-24 15:29:27 -07005994
5995 /** {@hide} */
5996 public static final String NETSTATS_DEV_BUCKET_DURATION = "netstats_dev_bucket_duration";
5997 /** {@hide} */
5998 public static final String NETSTATS_DEV_PERSIST_BYTES = "netstats_dev_persist_bytes";
5999 /** {@hide} */
6000 public static final String NETSTATS_DEV_ROTATE_AGE = "netstats_dev_rotate_age";
6001 /** {@hide} */
6002 public static final String NETSTATS_DEV_DELETE_AGE = "netstats_dev_delete_age";
6003
6004 /** {@hide} */
6005 public static final String NETSTATS_UID_BUCKET_DURATION = "netstats_uid_bucket_duration";
6006 /** {@hide} */
6007 public static final String NETSTATS_UID_PERSIST_BYTES = "netstats_uid_persist_bytes";
6008 /** {@hide} */
6009 public static final String NETSTATS_UID_ROTATE_AGE = "netstats_uid_rotate_age";
6010 /** {@hide} */
6011 public static final String NETSTATS_UID_DELETE_AGE = "netstats_uid_delete_age";
6012
6013 /** {@hide} */
6014 public static final String NETSTATS_UID_TAG_BUCKET_DURATION = "netstats_uid_tag_bucket_duration";
6015 /** {@hide} */
6016 public static final String NETSTATS_UID_TAG_PERSIST_BYTES = "netstats_uid_tag_persist_bytes";
6017 /** {@hide} */
6018 public static final String NETSTATS_UID_TAG_ROTATE_AGE = "netstats_uid_tag_rotate_age";
6019 /** {@hide} */
6020 public static final String NETSTATS_UID_TAG_DELETE_AGE = "netstats_uid_tag_delete_age";
6021
6022 /**
6023 * User preference for which network(s) should be used. Only the
6024 * connectivity service should touch this.
6025 */
6026 public static final String NETWORK_PREFERENCE = "network_preference";
6027
6028 /**
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -07006029 * Which package name to use for network scoring. If null, or if the package is not a valid
6030 * scorer app, external network scores will neither be requested nor accepted.
6031 * @hide
6032 */
6033 public static final String NETWORK_SCORER_APP = "network_scorer_app";
6034
6035 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006036 * If the NITZ_UPDATE_DIFF time is exceeded then an automatic adjustment
6037 * to SystemClock will be allowed even if NITZ_UPDATE_SPACING has not been
6038 * exceeded.
6039 * @hide
6040 */
6041 public static final String NITZ_UPDATE_DIFF = "nitz_update_diff";
6042
6043 /**
6044 * The length of time in milli-seconds that automatic small adjustments to
6045 * SystemClock are ignored if NITZ_UPDATE_DIFF is not exceeded.
6046 * @hide
6047 */
6048 public static final String NITZ_UPDATE_SPACING = "nitz_update_spacing";
6049
6050 /** Preferred NTP server. {@hide} */
6051 public static final String NTP_SERVER = "ntp_server";
6052 /** Timeout in milliseconds to wait for NTP server. {@hide} */
6053 public static final String NTP_TIMEOUT = "ntp_timeout";
6054
6055 /**
rich cannings4d8fc792012-09-07 14:43:43 -07006056 * Whether the package manager should send package verification broadcasts for verifiers to
6057 * review apps prior to installation.
6058 * 1 = request apps to be verified prior to installation, if a verifier exists.
6059 * 0 = do not verify apps before installation
rich cannings4e5753f2012-09-19 16:03:56 -07006060 * @hide
rich cannings4d8fc792012-09-07 14:43:43 -07006061 */
6062 public static final String PACKAGE_VERIFIER_ENABLE = "package_verifier_enable";
6063
6064 /** Timeout for package verification.
rich cannings4e5753f2012-09-19 16:03:56 -07006065 * @hide */
rich cannings4d8fc792012-09-07 14:43:43 -07006066 public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout";
6067
6068 /** Default response code for package verification.
rich cannings4e5753f2012-09-19 16:03:56 -07006069 * @hide */
rich cannings4d8fc792012-09-07 14:43:43 -07006070 public static final String PACKAGE_VERIFIER_DEFAULT_RESPONSE = "verifier_default_response";
6071
rich cannings4e5753f2012-09-19 16:03:56 -07006072 /**
6073 * Show package verification setting in the Settings app.
rich canningse6686b32012-09-16 14:02:20 -07006074 * 1 = show (default)
6075 * 0 = hide
rich cannings4e5753f2012-09-19 16:03:56 -07006076 * @hide
rich canningse6686b32012-09-16 14:02:20 -07006077 */
6078 public static final String PACKAGE_VERIFIER_SETTING_VISIBLE = "verifier_setting_visible";
6079
rich cannings4d8fc792012-09-07 14:43:43 -07006080 /**
rich cannings4e5753f2012-09-19 16:03:56 -07006081 * Run package verificaiton on apps installed through ADB/ADT/USB
6082 * 1 = perform package verification on ADB installs (default)
6083 * 0 = bypass package verification on ADB installs
6084 * @hide
6085 */
6086 public static final String PACKAGE_VERIFIER_INCLUDE_ADB = "verifier_verify_adb_installs";
6087
6088 /**
Christopher Tate7265abe2014-11-21 13:54:45 -08006089 * Time since last fstrim (milliseconds) after which we force one to happen
6090 * during device startup. If unset, the default is 3 days.
6091 * @hide
6092 */
6093 public static final String FSTRIM_MANDATORY_INTERVAL = "fstrim_mandatory_interval";
6094
6095 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006096 * The interval in milliseconds at which to check packet counts on the
6097 * mobile data interface when screen is on, to detect possible data
6098 * connection problems.
6099 * @hide
6100 */
6101 public static final String PDP_WATCHDOG_POLL_INTERVAL_MS =
6102 "pdp_watchdog_poll_interval_ms";
6103
6104 /**
6105 * The interval in milliseconds at which to check packet counts on the
6106 * mobile data interface when screen is off, to detect possible data
6107 * connection problems.
6108 * @hide
6109 */
6110 public static final String PDP_WATCHDOG_LONG_POLL_INTERVAL_MS =
6111 "pdp_watchdog_long_poll_interval_ms";
6112
6113 /**
6114 * The interval in milliseconds at which to check packet counts on the
6115 * mobile data interface after {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT}
6116 * outgoing packets has been reached without incoming packets.
6117 * @hide
6118 */
6119 public static final String PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS =
6120 "pdp_watchdog_error_poll_interval_ms";
6121
6122 /**
6123 * The number of outgoing packets sent without seeing an incoming packet
6124 * that triggers a countdown (of {@link #PDP_WATCHDOG_ERROR_POLL_COUNT}
6125 * device is logged to the event log
6126 * @hide
6127 */
6128 public static final String PDP_WATCHDOG_TRIGGER_PACKET_COUNT =
6129 "pdp_watchdog_trigger_packet_count";
6130
6131 /**
6132 * The number of polls to perform (at {@link #PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS})
6133 * after hitting {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} before
6134 * attempting data connection recovery.
6135 * @hide
6136 */
6137 public static final String PDP_WATCHDOG_ERROR_POLL_COUNT =
6138 "pdp_watchdog_error_poll_count";
6139
6140 /**
6141 * The number of failed PDP reset attempts before moving to something more
6142 * drastic: re-registering to the network.
6143 * @hide
6144 */
6145 public static final String PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT =
6146 "pdp_watchdog_max_pdp_reset_fail_count";
6147
6148 /**
6149 * A positive value indicates how often the SamplingProfiler
6150 * should take snapshots. Zero value means SamplingProfiler
6151 * is disabled.
6152 *
6153 * @hide
6154 */
6155 public static final String SAMPLING_PROFILER_MS = "sampling_profiler_ms";
6156
6157 /**
6158 * URL to open browser on to allow user to manage a prepay account
6159 * @hide
6160 */
6161 public static final String SETUP_PREPAID_DATA_SERVICE_URL =
6162 "setup_prepaid_data_service_url";
6163
6164 /**
6165 * URL to attempt a GET on to see if this is a prepay device
6166 * @hide
6167 */
6168 public static final String SETUP_PREPAID_DETECTION_TARGET_URL =
6169 "setup_prepaid_detection_target_url";
6170
6171 /**
6172 * Host to check for a redirect to after an attempt to GET
6173 * SETUP_PREPAID_DETECTION_TARGET_URL. (If we redirected there,
6174 * this is a prepaid device with zero balance.)
6175 * @hide
6176 */
6177 public static final String SETUP_PREPAID_DETECTION_REDIR_HOST =
6178 "setup_prepaid_detection_redir_host";
6179
6180 /**
Jake Hamby76a61422012-09-06 17:40:21 -07006181 * The interval in milliseconds at which to check the number of SMS sent out without asking
6182 * for use permit, to limit the un-authorized SMS usage.
6183 *
6184 * @hide
6185 */
6186 public static final String SMS_OUTGOING_CHECK_INTERVAL_MS =
6187 "sms_outgoing_check_interval_ms";
6188
6189 /**
6190 * The number of outgoing SMS sent without asking for user permit (of {@link
6191 * #SMS_OUTGOING_CHECK_INTERVAL_MS}
6192 *
6193 * @hide
6194 */
6195 public static final String SMS_OUTGOING_CHECK_MAX_COUNT =
6196 "sms_outgoing_check_max_count";
6197
6198 /**
6199 * Used to disable SMS short code confirmation - defaults to true.
Robert Greenwalt026efcc2012-09-24 10:03:21 -07006200 * True indcates we will do the check, etc. Set to false to disable.
Jake Hamby76a61422012-09-06 17:40:21 -07006201 * @see com.android.internal.telephony.SmsUsageMonitor
6202 * @hide
6203 */
6204 public static final String SMS_SHORT_CODE_CONFIRMATION = "sms_short_code_confirmation";
6205
Robert Greenwalt026efcc2012-09-24 10:03:21 -07006206 /**
6207 * Used to select which country we use to determine premium sms codes.
6208 * One of com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_SIM,
6209 * com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_NETWORK,
6210 * or com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_BOTH.
6211 * @hide
6212 */
6213 public static final String SMS_SHORT_CODE_RULE = "sms_short_code_rule";
6214
Jake Hamby76a61422012-09-06 17:40:21 -07006215 /**
JP Abgrall32d1ac4d2014-02-21 12:05:20 -08006216 * Used to select TCP's default initial receiver window size in segments - defaults to a build config value
6217 * @hide
6218 */
6219 public static final String TCP_DEFAULT_INIT_RWND = "tcp_default_init_rwnd";
6220
6221 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006222 * Used to disable Tethering on a device - defaults to true
6223 * @hide
6224 */
6225 public static final String TETHER_SUPPORTED = "tether_supported";
6226
6227 /**
6228 * Used to require DUN APN on the device or not - defaults to a build config value
6229 * which defaults to false
6230 * @hide
6231 */
6232 public static final String TETHER_DUN_REQUIRED = "tether_dun_required";
6233
6234 /**
6235 * Used to hold a gservices-provisioned apn value for DUN. If set, or the
6236 * corresponding build config values are set it will override the APN DB
6237 * values.
6238 * Consists of a comma seperated list of strings:
6239 * "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
6240 * note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN"
6241 * @hide
6242 */
6243 public static final String TETHER_DUN_APN = "tether_dun_apn";
6244
6245 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006246 * USB Mass Storage Enabled
6247 */
6248 public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
6249
6250 /**
6251 * If this setting is set (to anything), then all references
6252 * to Gmail on the device must change to Google Mail.
6253 */
6254 public static final String USE_GOOGLE_MAIL = "use_google_mail";
6255
Hui Shu22671772014-10-01 21:41:07 +00006256 /**
6257 * Webview Data reduction proxy key.
6258 * @hide
6259 */
6260 public static final String WEBVIEW_DATA_REDUCTION_PROXY_KEY =
6261 "webview_data_reduction_proxy_key";
6262
Christopher Tate06efb532012-08-24 15:29:27 -07006263 /**
Jeff Brown89d55462012-09-19 11:33:42 -07006264 * Whether Wifi display is enabled/disabled
6265 * 0=disabled. 1=enabled.
6266 * @hide
6267 */
6268 public static final String WIFI_DISPLAY_ON = "wifi_display_on";
6269
6270 /**
Chong Zhang1f3ecaa2013-05-03 15:55:36 -07006271 * Whether Wifi display certification mode is enabled/disabled
6272 * 0=disabled. 1=enabled.
6273 * @hide
6274 */
6275 public static final String WIFI_DISPLAY_CERTIFICATION_ON =
6276 "wifi_display_certification_on";
6277
6278 /**
Chong Zhange38af812013-08-29 17:25:17 -07006279 * WPS Configuration method used by Wifi display, this setting only
6280 * takes effect when WIFI_DISPLAY_CERTIFICATION_ON is 1 (enabled).
6281 *
6282 * Possible values are:
6283 *
6284 * WpsInfo.INVALID: use default WPS method chosen by framework
6285 * WpsInfo.PBC : use Push button
6286 * WpsInfo.KEYPAD : use Keypad
6287 * WpsInfo.DISPLAY: use Display
6288 * @hide
6289 */
6290 public static final String WIFI_DISPLAY_WPS_CONFIG =
6291 "wifi_display_wps_config";
6292
6293 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006294 * Whether to notify the user of open networks.
6295 * <p>
6296 * If not connected and the scan results have an open network, we will
6297 * put this notification up. If we attempt to connect to a network or
6298 * the open network(s) disappear, we remove the notification. When we
6299 * show the notification, we will not show it again for
6300 * {@link android.provider.Settings.Secure#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} time.
6301 */
6302 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
6303 "wifi_networks_available_notification_on";
6304 /**
6305 * {@hide}
6306 */
6307 public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON =
6308 "wimax_networks_available_notification_on";
6309
6310 /**
6311 * Delay (in seconds) before repeating the Wi-Fi networks available notification.
6312 * Connecting to a network will reset the timer.
6313 */
6314 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY =
6315 "wifi_networks_available_repeat_delay";
6316
6317 /**
Robert Greenwalt3ea0c992013-10-03 21:13:49 +00006318 * 802.11 country code in ISO 3166 format
6319 * @hide
6320 */
6321 public static final String WIFI_COUNTRY_CODE = "wifi_country_code";
6322
6323 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006324 * The interval in milliseconds to issue wake up scans when wifi needs
6325 * to connect. This is necessary to connect to an access point when
6326 * device is on the move and the screen is off.
6327 * @hide
6328 */
6329 public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS =
6330 "wifi_framework_scan_interval_ms";
6331
6332 /**
6333 * The interval in milliseconds after which Wi-Fi is considered idle.
6334 * When idle, it is possible for the device to be switched from Wi-Fi to
6335 * the mobile data network.
6336 * @hide
6337 */
6338 public static final String WIFI_IDLE_MS = "wifi_idle_ms";
6339
6340 /**
6341 * When the number of open networks exceeds this number, the
6342 * least-recently-used excess networks will be removed.
6343 */
6344 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
6345
6346 /**
6347 * Whether the Wi-Fi should be on. Only the Wi-Fi service should touch this.
6348 */
6349 public static final String WIFI_ON = "wifi_on";
6350
6351 /**
Irfan Sheriff11aefad2013-03-06 07:57:41 -08006352 * Setting to allow scans to be enabled even wifi is turned off for connectivity.
6353 * @hide
6354 */
6355 public static final String WIFI_SCAN_ALWAYS_AVAILABLE =
6356 "wifi_scan_always_enabled";
6357
6358 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006359 * Used to save the Wifi_ON state prior to tethering.
6360 * This state will be checked to restore Wifi after
6361 * the user turns off tethering.
6362 *
6363 * @hide
6364 */
6365 public static final String WIFI_SAVED_STATE = "wifi_saved_state";
6366
6367 /**
6368 * The interval in milliseconds to scan as used by the wifi supplicant
6369 * @hide
6370 */
6371 public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_MS =
6372 "wifi_supplicant_scan_interval_ms";
6373
vandwalle7c3606c2014-03-31 19:12:07 -07006374 /**
6375 * whether frameworks handles wifi auto-join
6376 * @hide
6377 */
6378 public static final String WIFI_ENHANCED_AUTO_JOIN =
6379 "wifi_enhanced_auto_join";
6380
6381 /**
6382 * whether settings show RSSI
6383 * @hide
6384 */
6385 public static final String WIFI_NETWORK_SHOW_RSSI =
6386 "wifi_network_show_rssi";
6387
6388 /**
Irfan Sheriff3809f502012-09-17 16:04:57 -07006389 * The interval in milliseconds to scan at supplicant when p2p is connected
6390 * @hide
6391 */
6392 public static final String WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS =
6393 "wifi_scan_interval_p2p_connected_ms";
6394
6395 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006396 * Whether the Wi-Fi watchdog is enabled.
6397 */
6398 public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
6399
6400 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006401 * Setting to turn off poor network avoidance on Wi-Fi. Feature is enabled by default and
6402 * the setting needs to be set to 0 to disable it.
6403 * @hide
6404 */
6405 public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED =
6406 "wifi_watchdog_poor_network_test_enabled";
6407
6408 /**
6409 * Setting to turn on suspend optimizations at screen off on Wi-Fi. Enabled by default and
6410 * needs to be set to 0 to disable it.
6411 * @hide
6412 */
6413 public static final String WIFI_SUSPEND_OPTIMIZATIONS_ENABLED =
6414 "wifi_suspend_optimizations_enabled";
6415
6416 /**
6417 * The maximum number of times we will retry a connection to an access
6418 * point for which we have failed in acquiring an IP address from DHCP.
6419 * A value of N means that we will make N+1 connection attempts in all.
6420 */
6421 public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
6422
6423 /**
6424 * Maximum amount of time in milliseconds to hold a wakelock while waiting for mobile
6425 * data connectivity to be established after a disconnect from Wi-Fi.
6426 */
6427 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
6428 "wifi_mobile_data_transition_wakelock_timeout_ms";
6429
6430 /**
6431 * The operational wifi frequency band
6432 * Set to one of {@link WifiManager#WIFI_FREQUENCY_BAND_AUTO},
6433 * {@link WifiManager#WIFI_FREQUENCY_BAND_5GHZ} or
6434 * {@link WifiManager#WIFI_FREQUENCY_BAND_2GHZ}
6435 *
6436 * @hide
6437 */
6438 public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band";
6439
6440 /**
6441 * The Wi-Fi peer-to-peer device name
6442 * @hide
6443 */
6444 public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name";
6445
6446 /**
Robert Greenwaltc12783a2013-05-16 12:48:20 -07006447 * The min time between wifi disable and wifi enable
6448 * @hide
6449 */
6450 public static final String WIFI_REENABLE_DELAY_MS = "wifi_reenable_delay";
6451
6452 /**
Jeff Davidsona20ca67d2014-12-16 11:48:54 -08006453 * Timeout for ephemeral networks when all known BSSIDs go out of range. We will disconnect
6454 * from an ephemeral network if there is no BSSID for that network with a non-null score that
6455 * has been seen in this time period.
6456 *
6457 * If this is less than or equal to zero, we use a more conservative behavior and only check
6458 * for a non-null score from the currently connected or target BSSID.
6459 * @hide
6460 */
6461 public static final String WIFI_EPHEMERAL_OUT_OF_RANGE_TIMEOUT_MS =
6462 "wifi_ephemeral_out_of_range_timeout_ms";
6463
6464 /**
Christopher Tatec868b642012-09-12 17:41:04 -07006465 * The number of milliseconds to delay when checking for data stalls during
6466 * non-aggressive detection. (screen is turned off.)
6467 * @hide
6468 */
6469 public static final String DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS =
6470 "data_stall_alarm_non_aggressive_delay_in_ms";
6471
6472 /**
6473 * The number of milliseconds to delay when checking for data stalls during
6474 * aggressive detection. (screen on or suspected data stall)
6475 * @hide
6476 */
6477 public static final String DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS =
6478 "data_stall_alarm_aggressive_delay_in_ms";
6479
6480 /**
Wink Savillece1e3792013-09-03 16:41:44 -07006481 * The number of milliseconds to allow the provisioning apn to remain active
6482 * @hide
6483 */
6484 public static final String PROVISIONING_APN_ALARM_DELAY_IN_MS =
6485 "provisioning_apn_alarm_delay_in_ms";
6486
6487 /**
Christopher Tatec868b642012-09-12 17:41:04 -07006488 * The interval in milliseconds at which to check gprs registration
6489 * after the first registration mismatch of gprs and voice service,
6490 * to detect possible data network registration problems.
6491 *
6492 * @hide
6493 */
6494 public static final String GPRS_REGISTER_CHECK_PERIOD_MS =
6495 "gprs_register_check_period_ms";
6496
6497 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006498 * Nonzero causes Log.wtf() to crash.
6499 * @hide
6500 */
6501 public static final String WTF_IS_FATAL = "wtf_is_fatal";
6502
Eric Laurentbc0fab1f2012-09-19 11:24:41 -07006503 /**
6504 * Ringer mode. This is used internally, changing this value will not
6505 * change the ringer mode. See AudioManager.
6506 */
6507 public static final String MODE_RINGER = "mode_ringer";
Christopher Tate06efb532012-08-24 15:29:27 -07006508
Jeff Brownd4935962012-09-25 13:27:20 -07006509 /**
6510 * Overlay display devices setting.
6511 * The associated value is a specially formatted string that describes the
6512 * size and density of simulated secondary display devices.
6513 * <p>
6514 * Format: {width}x{height}/{dpi};...
6515 * </p><p>
6516 * Example:
6517 * <ul>
6518 * <li><code>1280x720/213</code>: make one overlay that is 1280x720 at 213dpi.</li>
6519 * <li><code>1920x1080/320;1280x720/213</code>: make two overlays, the first
6520 * at 1080p and the second at 720p.</li>
6521 * <li>If the value is empty, then no overlay display devices are created.</li>
6522 * </ul></p>
6523 *
6524 * @hide
6525 */
6526 public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
Christopher Tate06efb532012-08-24 15:29:27 -07006527
Jeff Sharkey625239a2012-09-26 22:03:49 -07006528 /**
6529 * Threshold values for the duration and level of a discharge cycle,
6530 * under which we log discharge cycle info.
6531 *
6532 * @hide
6533 */
6534 public static final String
6535 BATTERY_DISCHARGE_DURATION_THRESHOLD = "battery_discharge_duration_threshold";
6536
6537 /** @hide */
6538 public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold";
6539
6540 /**
6541 * Flag for allowing ActivityManagerService to send ACTION_APP_ERROR
6542 * intents on application crashes and ANRs. If this is disabled, the
6543 * crash/ANR dialog will never display the "Report" button.
6544 * <p>
6545 * Type: int (0 = disallow, 1 = allow)
6546 *
6547 * @hide
6548 */
6549 public static final String SEND_ACTION_APP_ERROR = "send_action_app_error";
6550
6551 /**
6552 * Maximum age of entries kept by {@link DropBoxManager}.
6553 *
6554 * @hide
6555 */
6556 public static final String DROPBOX_AGE_SECONDS = "dropbox_age_seconds";
6557
6558 /**
6559 * Maximum number of entry files which {@link DropBoxManager} will keep
6560 * around.
6561 *
6562 * @hide
6563 */
6564 public static final String DROPBOX_MAX_FILES = "dropbox_max_files";
6565
6566 /**
6567 * Maximum amount of disk space used by {@link DropBoxManager} no matter
6568 * what.
6569 *
6570 * @hide
6571 */
6572 public static final String DROPBOX_QUOTA_KB = "dropbox_quota_kb";
6573
6574 /**
6575 * Percent of free disk (excluding reserve) which {@link DropBoxManager}
6576 * will use.
6577 *
6578 * @hide
6579 */
6580 public static final String DROPBOX_QUOTA_PERCENT = "dropbox_quota_percent";
6581
6582 /**
6583 * Percent of total disk which {@link DropBoxManager} will never dip
6584 * into.
6585 *
6586 * @hide
6587 */
6588 public static final String DROPBOX_RESERVE_PERCENT = "dropbox_reserve_percent";
6589
6590 /**
6591 * Prefix for per-tag dropbox disable/enable settings.
6592 *
6593 * @hide
6594 */
6595 public static final String DROPBOX_TAG_PREFIX = "dropbox:";
6596
6597 /**
6598 * Lines of logcat to include with system crash/ANR/etc. reports, as a
6599 * prefix of the dropbox tag of the report type. For example,
6600 * "logcat_for_system_server_anr" controls the lines of logcat captured
6601 * with system server ANR reports. 0 to disable.
6602 *
6603 * @hide
6604 */
6605 public static final String ERROR_LOGCAT_PREFIX = "logcat_for_";
6606
6607 /**
6608 * The interval in minutes after which the amount of free storage left
6609 * on the device is logged to the event log
6610 *
6611 * @hide
6612 */
6613 public static final String SYS_FREE_STORAGE_LOG_INTERVAL = "sys_free_storage_log_interval";
6614
6615 /**
6616 * Threshold for the amount of change in disk free space required to
6617 * report the amount of free space. Used to prevent spamming the logs
6618 * when the disk free space isn't changing frequently.
6619 *
6620 * @hide
6621 */
6622 public static final String
6623 DISK_FREE_CHANGE_REPORTING_THRESHOLD = "disk_free_change_reporting_threshold";
6624
6625 /**
6626 * Minimum percentage of free storage on the device that is used to
6627 * determine if the device is running low on storage. The default is 10.
6628 * <p>
6629 * Say this value is set to 10, the device is considered running low on
6630 * storage if 90% or more of the device storage is filled up.
6631 *
6632 * @hide
6633 */
6634 public static final String
6635 SYS_STORAGE_THRESHOLD_PERCENTAGE = "sys_storage_threshold_percentage";
6636
6637 /**
6638 * Maximum byte size of the low storage threshold. This is to ensure
6639 * that {@link #SYS_STORAGE_THRESHOLD_PERCENTAGE} does not result in an
6640 * overly large threshold for large storage devices. Currently this must
6641 * be less than 2GB. This default is 500MB.
6642 *
6643 * @hide
6644 */
6645 public static final String
6646 SYS_STORAGE_THRESHOLD_MAX_BYTES = "sys_storage_threshold_max_bytes";
6647
6648 /**
6649 * Minimum bytes of free storage on the device before the data partition
6650 * is considered full. By default, 1 MB is reserved to avoid system-wide
6651 * SQLite disk full exceptions.
6652 *
6653 * @hide
6654 */
6655 public static final String
6656 SYS_STORAGE_FULL_THRESHOLD_BYTES = "sys_storage_full_threshold_bytes";
6657
6658 /**
6659 * The maximum reconnect delay for short network outages or when the
6660 * network is suspended due to phone use.
6661 *
6662 * @hide
6663 */
6664 public static final String
6665 SYNC_MAX_RETRY_DELAY_IN_SECONDS = "sync_max_retry_delay_in_seconds";
6666
6667 /**
6668 * The number of milliseconds to delay before sending out
Erik Kline8f29dcf2014-12-08 16:25:20 +09006669 * {@link ConnectivityManager#CONNECTIVITY_ACTION} broadcasts. Ignored.
Jeff Sharkey625239a2012-09-26 22:03:49 -07006670 *
6671 * @hide
6672 */
6673 public static final String CONNECTIVITY_CHANGE_DELAY = "connectivity_change_delay";
6674
Vinit Deshapnde1f12cb52013-08-21 13:09:01 -07006675
6676 /**
6677 * Network sampling interval, in seconds. We'll generate link information
6678 * about bytes/packets sent and error rates based on data sampled in this interval
6679 *
6680 * @hide
6681 */
6682
6683 public static final String CONNECTIVITY_SAMPLING_INTERVAL_IN_SECONDS =
6684 "connectivity_sampling_interval_in_seconds";
6685
Jeff Sharkey625239a2012-09-26 22:03:49 -07006686 /**
Jason Monk602b2322013-07-03 17:04:33 -04006687 * The series of successively longer delays used in retrying to download PAC file.
6688 * Last delay is used between successful PAC downloads.
6689 *
6690 * @hide
6691 */
6692 public static final String PAC_CHANGE_DELAY = "pac_change_delay";
6693
6694 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07006695 * Setting to turn off captive portal detection. Feature is enabled by
6696 * default and the setting needs to be set to 0 to disable it.
6697 *
6698 * @hide
6699 */
6700 public static final String
6701 CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled";
6702
6703 /**
6704 * The server used for captive portal detection upon a new conection. A
6705 * 204 response code from the server is used for validation.
6706 *
6707 * @hide
6708 */
6709 public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server";
6710
6711 /**
6712 * Whether network service discovery is enabled.
6713 *
6714 * @hide
6715 */
6716 public static final String NSD_ON = "nsd_on";
6717
6718 /**
6719 * Let user pick default install location.
6720 *
6721 * @hide
6722 */
6723 public static final String SET_INSTALL_LOCATION = "set_install_location";
6724
6725 /**
6726 * Default install location value.
6727 * 0 = auto, let system decide
6728 * 1 = internal
6729 * 2 = sdcard
6730 * @hide
6731 */
6732 public static final String DEFAULT_INSTALL_LOCATION = "default_install_location";
6733
6734 /**
6735 * ms during which to consume extra events related to Inet connection
6736 * condition after a transtion to fully-connected
6737 *
6738 * @hide
6739 */
6740 public static final String
6741 INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay";
6742
6743 /**
6744 * ms during which to consume extra events related to Inet connection
6745 * condtion after a transtion to partly-connected
6746 *
6747 * @hide
6748 */
6749 public static final String
6750 INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay";
6751
6752 /** {@hide} */
6753 public static final String
6754 READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT = "read_external_storage_enforced_default";
6755
6756 /**
6757 * Host name and port for global http proxy. Uses ':' seperator for
6758 * between host and port.
6759 */
6760 public static final String HTTP_PROXY = "http_proxy";
6761
6762 /**
6763 * Host name for global http proxy. Set via ConnectivityManager.
6764 *
6765 * @hide
6766 */
6767 public static final String GLOBAL_HTTP_PROXY_HOST = "global_http_proxy_host";
6768
6769 /**
6770 * Integer host port for global http proxy. Set via ConnectivityManager.
6771 *
6772 * @hide
6773 */
6774 public static final String GLOBAL_HTTP_PROXY_PORT = "global_http_proxy_port";
6775
6776 /**
6777 * Exclusion list for global proxy. This string contains a list of
6778 * comma-separated domains where the global proxy does not apply.
6779 * Domains should be listed in a comma- separated list. Example of
6780 * acceptable formats: ".domain1.com,my.domain2.com" Use
6781 * ConnectivityManager to set/get.
6782 *
6783 * @hide
6784 */
6785 public static final String
6786 GLOBAL_HTTP_PROXY_EXCLUSION_LIST = "global_http_proxy_exclusion_list";
6787
6788 /**
Jason Monk602b2322013-07-03 17:04:33 -04006789 * The location PAC File for the proxy.
6790 * @hide
6791 */
6792 public static final String
6793 GLOBAL_HTTP_PROXY_PAC = "global_proxy_pac_url";
6794
6795 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07006796 * Enables the UI setting to allow the user to specify the global HTTP
6797 * proxy and associated exclusion list.
6798 *
6799 * @hide
6800 */
6801 public static final String SET_GLOBAL_HTTP_PROXY = "set_global_http_proxy";
6802
6803 /**
6804 * Setting for default DNS in case nobody suggests one
6805 *
6806 * @hide
6807 */
6808 public static final String DEFAULT_DNS_SERVER = "default_dns_server";
6809
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006810 /** {@hide} */
6811 public static final String
6812 BLUETOOTH_HEADSET_PRIORITY_PREFIX = "bluetooth_headset_priority_";
6813 /** {@hide} */
6814 public static final String
6815 BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX = "bluetooth_a2dp_sink_priority_";
6816 /** {@hide} */
6817 public static final String
6818 BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX = "bluetooth_input_device_priority_";
Kim Schulz0d376052013-08-22 11:18:02 +02006819 /** {@hide} */
6820 public static final String
6821 BLUETOOTH_MAP_PRIORITY_PREFIX = "bluetooth_map_priority_";
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006822
6823 /**
6824 * Get the key that retrieves a bluetooth headset's priority.
6825 * @hide
6826 */
6827 public static final String getBluetoothHeadsetPriorityKey(String address) {
Elliott Hughescb64d432013-08-02 10:00:44 -07006828 return BLUETOOTH_HEADSET_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006829 }
6830
6831 /**
6832 * Get the key that retrieves a bluetooth a2dp sink's priority.
6833 * @hide
6834 */
6835 public static final String getBluetoothA2dpSinkPriorityKey(String address) {
Elliott Hughescb64d432013-08-02 10:00:44 -07006836 return BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006837 }
6838
6839 /**
6840 * Get the key that retrieves a bluetooth Input Device's priority.
6841 * @hide
6842 */
6843 public static final String getBluetoothInputDevicePriorityKey(String address) {
Elliott Hughescb64d432013-08-02 10:00:44 -07006844 return BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006845 }
6846
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006847 /**
Kim Schulz0d376052013-08-22 11:18:02 +02006848 * Get the key that retrieves a bluetooth map priority.
6849 * @hide
6850 */
6851 public static final String getBluetoothMapPriorityKey(String address) {
6852 return BLUETOOTH_MAP_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
6853 }
6854 /**
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006855 * Scaling factor for normal window animations. Setting to 0 will
6856 * disable window animations.
6857 */
6858 public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
6859
6860 /**
6861 * Scaling factor for activity transition animations. Setting to 0 will
6862 * disable window animations.
6863 */
6864 public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
6865
6866 /**
6867 * Scaling factor for Animator-based animations. This affects both the
6868 * start delay and duration of all such animations. Setting to 0 will
6869 * cause animations to end immediately. The default value is 1.
6870 */
6871 public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
6872
6873 /**
6874 * Scaling factor for normal window animations. Setting to 0 will
6875 * disable window animations.
6876 *
6877 * @hide
6878 */
6879 public static final String FANCY_IME_ANIMATIONS = "fancy_ime_animations";
6880
6881 /**
6882 * If 0, the compatibility mode is off for all applications.
6883 * If 1, older applications run under compatibility mode.
6884 * TODO: remove this settings before code freeze (bug/1907571)
6885 * @hide
6886 */
6887 public static final String COMPATIBILITY_MODE = "compatibility_mode";
6888
6889 /**
6890 * CDMA only settings
6891 * Emergency Tone 0 = Off
6892 * 1 = Alert
6893 * 2 = Vibrate
6894 * @hide
6895 */
6896 public static final String EMERGENCY_TONE = "emergency_tone";
6897
6898 /**
6899 * CDMA only settings
6900 * Whether the auto retry is enabled. The value is
6901 * boolean (1 or 0).
6902 * @hide
6903 */
6904 public static final String CALL_AUTO_RETRY = "call_auto_retry";
6905
6906 /**
Sungmin Choie099ab12014-06-09 14:45:51 +09006907 * See RIL_PreferredNetworkType in ril.h
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006908 * @hide
6909 */
6910 public static final String PREFERRED_NETWORK_MODE =
6911 "preferred_network_mode";
6912
6913 /**
Junda Liubbdc1c02014-11-07 11:18:02 -08006914 * Setting to 1 will hide carrier network settings.
6915 * Default is 0.
6916 * @hide
6917 */
6918 public static final String HIDE_CARRIER_NETWORK_SETTINGS =
6919 "hide_carrier_network_settings";
6920
6921 /**
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006922 * Name of an application package to be debugged.
6923 */
6924 public static final String DEBUG_APP = "debug_app";
6925
6926 /**
6927 * If 1, when launching DEBUG_APP it will wait for the debugger before
6928 * starting user code. If 0, it will run normally.
6929 */
6930 public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
6931
6932 /**
6933 * Control whether the process CPU usage meter should be shown.
6934 */
6935 public static final String SHOW_PROCESSES = "show_processes";
6936
6937 /**
Ruchi Kandoi62b8a492014-04-17 18:01:40 -07006938 * If 1 low power mode is enabled.
6939 * @hide
6940 */
6941 public static final String LOW_POWER_MODE = "low_power";
6942
John Spurlockf8f524c2014-06-10 14:47:29 -04006943 /**
6944 * Battery level [1-99] at which low power mode automatically turns on.
Dianne Hackborn14272302014-06-10 23:13:02 -07006945 * If 0, it will not automatically turn on.
John Spurlockf8f524c2014-06-10 14:47:29 -04006946 * @hide
6947 */
6948 public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level";
6949
Ruchi Kandoi62b8a492014-04-17 18:01:40 -07006950 /**
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006951 * If 1, the activity manager will aggressively finish activities and
6952 * processes as soon as they are no longer needed. If 0, the normal
6953 * extended lifetime is used.
6954 */
Dianne Hackborn89ad4562014-08-24 16:45:38 -07006955 public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006956
Christopher Tate66488d62012-10-02 11:58:01 -07006957 /**
Eric Laurent7ee1e4f2012-10-26 18:11:21 -07006958 * Use Dock audio output for media:
6959 * 0 = disabled
6960 * 1 = enabled
6961 * @hide
6962 */
6963 public static final String DOCK_AUDIO_MEDIA_ENABLED = "dock_audio_media_enabled";
6964
6965 /**
Eric Laurent05274f32012-11-29 12:48:18 -08006966 * Persisted safe headphone volume management state by AudioService
6967 * @hide
6968 */
6969 public static final String AUDIO_SAFE_VOLUME_STATE = "audio_safe_volume_state";
6970
6971 /**
Geremy Condraa0735112013-03-26 21:49:26 -07006972 * URL for tzinfo (time zone) updates
6973 * @hide
6974 */
6975 public static final String TZINFO_UPDATE_CONTENT_URL = "tzinfo_content_url";
6976
6977 /**
6978 * URL for tzinfo (time zone) update metadata
6979 * @hide
6980 */
6981 public static final String TZINFO_UPDATE_METADATA_URL = "tzinfo_metadata_url";
6982
6983 /**
6984 * URL for selinux (mandatory access control) updates
6985 * @hide
6986 */
6987 public static final String SELINUX_UPDATE_CONTENT_URL = "selinux_content_url";
6988
6989 /**
6990 * URL for selinux (mandatory access control) update metadata
6991 * @hide
6992 */
6993 public static final String SELINUX_UPDATE_METADATA_URL = "selinux_metadata_url";
6994
6995 /**
6996 * URL for sms short code updates
6997 * @hide
6998 */
6999 public static final String SMS_SHORT_CODES_UPDATE_CONTENT_URL =
7000 "sms_short_codes_content_url";
7001
7002 /**
7003 * URL for sms short code update metadata
7004 * @hide
7005 */
7006 public static final String SMS_SHORT_CODES_UPDATE_METADATA_URL =
7007 "sms_short_codes_metadata_url";
7008
7009 /**
7010 * URL for cert pinlist updates
7011 * @hide
7012 */
7013 public static final String CERT_PIN_UPDATE_CONTENT_URL = "cert_pin_content_url";
7014
7015 /**
7016 * URL for cert pinlist updates
7017 * @hide
7018 */
7019 public static final String CERT_PIN_UPDATE_METADATA_URL = "cert_pin_metadata_url";
7020
Geremy Condra757ee522013-03-29 16:39:45 -07007021 /**
Ben Gruver633dc9b2013-04-04 12:05:49 -07007022 * URL for intent firewall updates
7023 * @hide
7024 */
7025 public static final String INTENT_FIREWALL_UPDATE_CONTENT_URL =
7026 "intent_firewall_content_url";
7027
7028 /**
7029 * URL for intent firewall update metadata
7030 * @hide
7031 */
7032 public static final String INTENT_FIREWALL_UPDATE_METADATA_URL =
7033 "intent_firewall_metadata_url";
7034
7035 /**
Geremy Condra4e7f7e82013-03-26 21:09:01 -07007036 * SELinux enforcement status. If 0, permissive; if 1, enforcing.
7037 * @hide
7038 */
7039 public static final String SELINUX_STATUS = "selinux_status";
7040
Geremy Condraa0735112013-03-26 21:49:26 -07007041 /**
Amith Yamasanid8415f42013-08-07 20:15:10 -07007042 * Developer setting to force RTL layout.
7043 * @hide
7044 */
7045 public static final String DEVELOPMENT_FORCE_RTL = "debug.force_rtl";
7046
7047 /**
Daniel Sandlerdea64622013-09-23 16:05:57 -04007048 * Milliseconds after screen-off after which low battery sounds will be silenced.
7049 *
7050 * If zero, battery sounds will always play.
7051 * Defaults to @integer/def_low_battery_sound_timeout in SettingsProvider.
7052 *
7053 * @hide
7054 */
7055 public static final String LOW_BATTERY_SOUND_TIMEOUT = "low_battery_sound_timeout";
7056
7057 /**
Evan Charltoncc7b0432014-01-14 14:47:11 -08007058 * Milliseconds to wait before bouncing Wi-Fi after settings is restored. Note that after
Dianne Hackborna3fb40d2014-08-12 15:06:50 -07007059 * the caller is done with this, they should call {@link ContentResolver#delete} to
Evan Charltoncc7b0432014-01-14 14:47:11 -08007060 * clean up any value that they may have written.
7061 *
7062 * @hide
7063 */
7064 public static final String WIFI_BOUNCE_DELAY_OVERRIDE_MS = "wifi_bounce_delay_override_ms";
7065
John Spurlockc6d1c602014-01-17 15:22:06 -05007066 /**
7067 * Defines global runtime overrides to window policy.
7068 *
Jorim Jaggib10e33f2015-02-04 21:57:40 +01007069 * See {@link com.android.server.policy.PolicyControl} for value format.
John Spurlockc6d1c602014-01-17 15:22:06 -05007070 *
7071 * @hide
7072 */
7073 public static final String POLICY_CONTROL = "policy_control";
Evan Charltoncc7b0432014-01-14 14:47:11 -08007074
7075 /**
John Spurlockae641c92014-06-30 18:11:40 -04007076 * Defines global zen mode. ZEN_MODE_OFF, ZEN_MODE_IMPORTANT_INTERRUPTIONS,
7077 * or ZEN_MODE_NO_INTERRUPTIONS.
John Spurlocke677d712014-02-13 12:52:19 -05007078 *
7079 * @hide
7080 */
7081 public static final String ZEN_MODE = "zen_mode";
7082
7083 /** @hide */ public static final int ZEN_MODE_OFF = 0;
John Spurlockae641c92014-06-30 18:11:40 -04007084 /** @hide */ public static final int ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1;
7085 /** @hide */ public static final int ZEN_MODE_NO_INTERRUPTIONS = 2;
John Spurlocke677d712014-02-13 12:52:19 -05007086
7087 /** @hide */ public static String zenModeToString(int mode) {
John Spurlockae641c92014-06-30 18:11:40 -04007088 if (mode == ZEN_MODE_IMPORTANT_INTERRUPTIONS) return "ZEN_MODE_IMPORTANT_INTERRUPTIONS";
7089 if (mode == ZEN_MODE_NO_INTERRUPTIONS) return "ZEN_MODE_NO_INTERRUPTIONS";
7090 return "ZEN_MODE_OFF";
John Spurlocke677d712014-02-13 12:52:19 -05007091 }
7092
7093 /**
John Spurlock056c5192014-04-20 21:52:01 -04007094 * Opaque value, changes when persisted zen mode configuration changes.
7095 *
7096 * @hide
7097 */
7098 public static final String ZEN_MODE_CONFIG_ETAG = "zen_mode_config_etag";
7099
7100 /**
Chris Wren7bd241232014-02-28 16:25:05 -05007101 * Defines global heads up toggle. One of HEADS_UP_OFF, HEADS_UP_ON.
7102 *
7103 * @hide
7104 */
Chris Wren10d82df2014-03-01 10:34:51 -05007105 public static final String HEADS_UP_NOTIFICATIONS_ENABLED =
7106 "heads_up_notifications_enabled";
Chris Wren7bd241232014-02-28 16:25:05 -05007107
7108 /** @hide */ public static final int HEADS_UP_OFF = 0;
7109 /** @hide */ public static final int HEADS_UP_ON = 1;
7110
7111 /**
Jerome Poichet147b4d72014-05-12 18:13:27 -07007112 * The name of the device
7113 *
7114 * @hide
7115 */
7116 public static final String DEVICE_NAME = "device_name";
7117
7118 /**
Amith Yamasani1e9c2182014-06-11 17:25:51 -07007119 * Whether it should be possible to create a guest user on the device.
7120 * <p>
7121 * Type: int (0 for disabled, 1 for enabled)
7122 * @hide
7123 */
7124 public static final String GUEST_USER_ENABLED = "guest_user_enabled";
7125
7126 /**
Jeff Davidson56f9f732014-08-14 16:47:23 -07007127 * Whether the NetworkScoringService has been first initialized.
7128 * <p>
7129 * Type: int (0 for false, 1 for true)
7130 * @hide
7131 */
7132 public static final String NETWORK_SCORING_PROVISIONED = "network_scoring_provisioned";
7133
7134 /**
Jim Miller6848dc82014-10-13 18:51:53 -07007135 * Whether the user wants to be prompted for password to decrypt the device on boot.
7136 * This only matters if the storage is encrypted.
7137 * <p>
7138 * Type: int (0 for false, 1 for true)
7139 * @hide
7140 */
7141 public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
7142
7143 /**
Libin.Tang@motorola.com0499bb52014-10-10 14:55:57 -05007144 * Whether the Volte/VT is enabled
7145 * <p>
7146 * Type: int (0 for false, 1 for true)
7147 * @hide
7148 */
Etan Cohene41a9cf2014-10-22 10:50:46 -07007149 public static final String ENHANCED_4G_MODE_ENABLED = "volte_vt_enabled";
Libin.Tang@motorola.com0499bb52014-10-10 14:55:57 -05007150
7151 /**
Etan Cohen9c8f21b2014-12-23 15:02:19 -08007152 * Whether WFC is enabled
7153 * <p>
7154 * Type: int (0 for false, 1 for true)
7155 *
7156 * @hide
7157 */
7158 public static final String WFC_IMS_ENABLED = "wfc_ims_enabled";
7159
7160 /**
7161 * WFC Mode.
7162 * <p>
7163 * Type: int - 2=Wi-Fi preferred, 1=Cellular preferred, 0=Wi-Fi only
7164 *
7165 * @hide
7166 */
7167 public static final String WFC_IMS_MODE = "wfc_ims_mode";
7168
7169 /**
7170 * Whether WFC roaming is enabled
7171 * <p>
7172 * Type: int (0 for false, 1 for true)
7173 *
7174 * @hide
7175 */
7176 public static final String WFC_IMS_ROAMING_ENABLED = "wfc_ims_roaming_enabled";
7177
7178 /**
Etan Cohen7ab0ad12014-11-24 11:18:01 -08007179 * Global override to disable VoLTE (independent of user setting)
7180 * <p>
7181 * Type: int (1 for disable VoLTE, 0 to use user configuration)
7182 * @hide
7183 */
7184 public static final String VOLTE_FEATURE_DISABLED = "volte_feature_disabled";
7185
7186 /**
Amit Mahajan4fea0922014-11-18 12:56:28 -08007187 * Whether user can enable/disable LTE as a preferred network. A carrier might control
7188 * this via gservices, OMA-DM, carrier app, etc.
7189 * <p>
7190 * Type: int (0 for false, 1 for true)
7191 * @hide
7192 */
7193 public static final String LTE_SERVICE_FORCED = "lte_service_forced";
7194
7195 /**
Christopher Tate66488d62012-10-02 11:58:01 -07007196 * Settings to backup. This is here so that it's in the same place as the settings
7197 * keys and easy to update.
7198 *
7199 * These keys may be mentioned in the SETTINGS_TO_BACKUP arrays in System
7200 * and Secure as well. This is because those tables drive both backup and
7201 * restore, and restore needs to properly whitelist keys that used to live
7202 * in those namespaces. The keys will only actually be backed up / restored
7203 * if they are also mentioned in this table (Global.SETTINGS_TO_BACKUP).
7204 *
7205 * NOTE: Settings are backed up and restored in the order they appear
7206 * in this array. If you have one setting depending on another,
7207 * make sure that they are ordered appropriately.
7208 *
7209 * @hide
7210 */
7211 public static final String[] SETTINGS_TO_BACKUP = {
Christopher Tate58f41ec2013-01-11 15:40:36 -08007212 BUGREPORT_IN_POWER_MENU,
Christopher Tate66488d62012-10-02 11:58:01 -07007213 STAY_ON_WHILE_PLUGGED_IN,
Christopher Tate66488d62012-10-02 11:58:01 -07007214 AUTO_TIME,
7215 AUTO_TIME_ZONE,
7216 POWER_SOUNDS_ENABLED,
7217 DOCK_SOUNDS_ENABLED,
7218 USB_MASS_STORAGE_ENABLED,
7219 ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED,
7220 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
7221 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY,
Christopher Tate16eb7cd2012-10-09 15:26:30 -07007222 WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED,
Christopher Tate66488d62012-10-02 11:58:01 -07007223 WIFI_NUM_OPEN_NETWORKS_KEPT,
7224 EMERGENCY_TONE,
7225 CALL_AUTO_RETRY,
Amith Yamasani94005242014-10-31 11:35:13 -07007226 DOCK_AUDIO_MEDIA_ENABLED,
7227 LOW_POWER_MODE_TRIGGER_LEVEL
Christopher Tate66488d62012-10-02 11:58:01 -07007228 };
7229
Christopher Tate06efb532012-08-24 15:29:27 -07007230 // Populated lazily, guarded by class object:
Dianne Hackborn139748f2012-09-24 11:36:57 -07007231 private static NameValueCache sNameValueCache = new NameValueCache(
7232 SYS_PROP_SETTING_VERSION,
7233 CONTENT_URI,
7234 CALL_METHOD_GET_GLOBAL,
7235 CALL_METHOD_PUT_GLOBAL);
Christopher Tate06efb532012-08-24 15:29:27 -07007236
Christopher Tateaa036a22014-05-19 16:33:27 -07007237 // Certain settings have been moved from global to the per-user secure namespace
7238 private static final HashSet<String> MOVED_TO_SECURE;
7239 static {
7240 MOVED_TO_SECURE = new HashSet<String>(1);
7241 MOVED_TO_SECURE.add(Settings.Global.INSTALL_NON_MARKET_APPS);
7242 }
7243
Svetoslav683914b2015-01-15 14:22:26 -08007244 /** @hide */
7245 public static void getMovedToSecureSettings(Set<String> outKeySet) {
7246 outKeySet.addAll(MOVED_TO_SECURE);
7247 }
7248
Christopher Tate06efb532012-08-24 15:29:27 -07007249 /**
7250 * Look up a name in the database.
7251 * @param resolver to access the database with
7252 * @param name to look up in the table
7253 * @return the corresponding value, or null if not present
7254 */
Dianne Hackborn139748f2012-09-24 11:36:57 -07007255 public static String getString(ContentResolver resolver, String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07007256 return getStringForUser(resolver, name, UserHandle.myUserId());
7257 }
7258
7259 /** @hide */
Dianne Hackborn139748f2012-09-24 11:36:57 -07007260 public static String getStringForUser(ContentResolver resolver, String name,
Christopher Tate06efb532012-08-24 15:29:27 -07007261 int userHandle) {
Christopher Tateaa036a22014-05-19 16:33:27 -07007262 if (MOVED_TO_SECURE.contains(name)) {
7263 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global"
7264 + " to android.provider.Settings.Secure, returning read-only value.");
7265 return Secure.getStringForUser(resolver, name, userHandle);
7266 }
Christopher Tate06efb532012-08-24 15:29:27 -07007267 return sNameValueCache.getStringForUser(resolver, name, userHandle);
7268 }
7269
7270 /**
7271 * Store a name/value pair into the database.
7272 * @param resolver to access the database with
7273 * @param name to store
7274 * @param value to associate with the name
7275 * @return true if the value was set, false on database errors
7276 */
7277 public static boolean putString(ContentResolver resolver,
7278 String name, String value) {
7279 return putStringForUser(resolver, name, value, UserHandle.myUserId());
7280 }
7281
7282 /** @hide */
7283 public static boolean putStringForUser(ContentResolver resolver,
7284 String name, String value, int userHandle) {
Christopher Tate06efb532012-08-24 15:29:27 -07007285 if (LOCAL_LOGV) {
7286 Log.v(TAG, "Global.putString(name=" + name + ", value=" + value
7287 + " for " + userHandle);
7288 }
Christopher Tateaa036a22014-05-19 16:33:27 -07007289 // Global and Secure have the same access policy so we can forward writes
7290 if (MOVED_TO_SECURE.contains(name)) {
7291 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global"
7292 + " to android.provider.Settings.Secure, value is unchanged.");
7293 return Secure.putStringForUser(resolver, name, value, userHandle);
7294 }
Christopher Tate06efb532012-08-24 15:29:27 -07007295 return sNameValueCache.putStringForUser(resolver, name, value, userHandle);
7296 }
7297
7298 /**
7299 * Construct the content URI for a particular name/value pair,
7300 * useful for monitoring changes with a ContentObserver.
7301 * @param name to look up in the table
7302 * @return the corresponding content URI, or null if not present
7303 */
7304 public static Uri getUriFor(String name) {
7305 return getUriFor(CONTENT_URI, name);
7306 }
7307
7308 /**
7309 * Convenience function for retrieving a single secure settings value
7310 * as an integer. Note that internally setting values are always
7311 * stored as strings; this function converts the string to an integer
7312 * for you. The default value will be returned if the setting is
7313 * not defined or not an integer.
7314 *
7315 * @param cr The ContentResolver to access.
7316 * @param name The name of the setting to retrieve.
7317 * @param def Value to return if the setting is not defined.
7318 *
7319 * @return The setting's current value, or 'def' if it is not defined
7320 * or not a valid integer.
7321 */
7322 public static int getInt(ContentResolver cr, String name, int def) {
7323 String v = getString(cr, name);
7324 try {
7325 return v != null ? Integer.parseInt(v) : def;
7326 } catch (NumberFormatException e) {
7327 return def;
7328 }
7329 }
7330
7331 /**
7332 * Convenience function for retrieving a single secure settings value
7333 * as an integer. Note that internally setting values are always
7334 * stored as strings; this function converts the string to an integer
7335 * for you.
7336 * <p>
7337 * This version does not take a default value. If the setting has not
7338 * been set, or the string value is not a number,
7339 * it throws {@link SettingNotFoundException}.
7340 *
7341 * @param cr The ContentResolver to access.
7342 * @param name The name of the setting to retrieve.
7343 *
7344 * @throws SettingNotFoundException Thrown if a setting by the given
7345 * name can't be found or the setting value is not an integer.
7346 *
7347 * @return The setting's current value.
7348 */
7349 public static int getInt(ContentResolver cr, String name)
7350 throws SettingNotFoundException {
7351 String v = getString(cr, name);
7352 try {
7353 return Integer.parseInt(v);
7354 } catch (NumberFormatException e) {
7355 throw new SettingNotFoundException(name);
7356 }
7357 }
7358
7359 /**
7360 * Convenience function for updating a single settings value as an
7361 * integer. This will either create a new entry in the table if the
7362 * given name does not exist, or modify the value of the existing row
7363 * with that name. Note that internally setting values are always
7364 * stored as strings, so this function converts the given value to a
7365 * string before storing it.
7366 *
7367 * @param cr The ContentResolver to access.
7368 * @param name The name of the setting to modify.
7369 * @param value The new value for the setting.
7370 * @return true if the value was set, false on database errors
7371 */
7372 public static boolean putInt(ContentResolver cr, String name, int value) {
7373 return putString(cr, name, Integer.toString(value));
7374 }
7375
7376 /**
7377 * Convenience function for retrieving a single secure settings value
7378 * as a {@code long}. Note that internally setting values are always
7379 * stored as strings; this function converts the string to a {@code long}
7380 * for you. The default value will be returned if the setting is
7381 * not defined or not a {@code long}.
7382 *
7383 * @param cr The ContentResolver to access.
7384 * @param name The name of the setting to retrieve.
7385 * @param def Value to return if the setting is not defined.
7386 *
7387 * @return The setting's current value, or 'def' if it is not defined
7388 * or not a valid {@code long}.
7389 */
7390 public static long getLong(ContentResolver cr, String name, long def) {
7391 String valString = getString(cr, name);
7392 long value;
7393 try {
7394 value = valString != null ? Long.parseLong(valString) : def;
7395 } catch (NumberFormatException e) {
7396 value = def;
7397 }
7398 return value;
7399 }
7400
7401 /**
7402 * Convenience function for retrieving a single secure settings value
7403 * as a {@code long}. Note that internally setting values are always
7404 * stored as strings; this function converts the string to a {@code long}
7405 * for you.
7406 * <p>
7407 * This version does not take a default value. If the setting has not
7408 * been set, or the string value is not a number,
7409 * it throws {@link SettingNotFoundException}.
7410 *
7411 * @param cr The ContentResolver to access.
7412 * @param name The name of the setting to retrieve.
7413 *
7414 * @return The setting's current value.
7415 * @throws SettingNotFoundException Thrown if a setting by the given
7416 * name can't be found or the setting value is not an integer.
7417 */
7418 public static long getLong(ContentResolver cr, String name)
7419 throws SettingNotFoundException {
7420 String valString = getString(cr, name);
7421 try {
7422 return Long.parseLong(valString);
7423 } catch (NumberFormatException e) {
7424 throw new SettingNotFoundException(name);
7425 }
7426 }
7427
7428 /**
7429 * Convenience function for updating a secure settings value as a long
7430 * integer. This will either create a new entry in the table if the
7431 * given name does not exist, or modify the value of the existing row
7432 * with that name. Note that internally setting values are always
7433 * stored as strings, so this function converts the given value to a
7434 * string before storing it.
7435 *
7436 * @param cr The ContentResolver to access.
7437 * @param name The name of the setting to modify.
7438 * @param value The new value for the setting.
7439 * @return true if the value was set, false on database errors
7440 */
7441 public static boolean putLong(ContentResolver cr, String name, long value) {
7442 return putString(cr, name, Long.toString(value));
7443 }
7444
7445 /**
7446 * Convenience function for retrieving a single secure settings value
7447 * as a floating point number. Note that internally setting values are
7448 * always stored as strings; this function converts the string to an
7449 * float for you. The default value will be returned if the setting
7450 * is not defined or not a valid float.
7451 *
7452 * @param cr The ContentResolver to access.
7453 * @param name The name of the setting to retrieve.
7454 * @param def Value to return if the setting is not defined.
7455 *
7456 * @return The setting's current value, or 'def' if it is not defined
7457 * or not a valid float.
7458 */
7459 public static float getFloat(ContentResolver cr, String name, float def) {
7460 String v = getString(cr, name);
7461 try {
7462 return v != null ? Float.parseFloat(v) : def;
7463 } catch (NumberFormatException e) {
7464 return def;
7465 }
7466 }
7467
7468 /**
7469 * Convenience function for retrieving a single secure settings value
7470 * as a float. Note that internally setting values are always
7471 * stored as strings; this function converts the string to a float
7472 * for you.
7473 * <p>
7474 * This version does not take a default value. If the setting has not
7475 * been set, or the string value is not a number,
7476 * it throws {@link SettingNotFoundException}.
7477 *
7478 * @param cr The ContentResolver to access.
7479 * @param name The name of the setting to retrieve.
7480 *
7481 * @throws SettingNotFoundException Thrown if a setting by the given
7482 * name can't be found or the setting value is not a float.
7483 *
7484 * @return The setting's current value.
7485 */
7486 public static float getFloat(ContentResolver cr, String name)
7487 throws SettingNotFoundException {
7488 String v = getString(cr, name);
7489 if (v == null) {
7490 throw new SettingNotFoundException(name);
7491 }
7492 try {
7493 return Float.parseFloat(v);
7494 } catch (NumberFormatException e) {
7495 throw new SettingNotFoundException(name);
7496 }
7497 }
7498
7499 /**
7500 * Convenience function for updating a single settings value as a
7501 * floating point number. This will either create a new entry in the
7502 * table if the given name does not exist, or modify the value of the
7503 * existing row with that name. Note that internally setting values
7504 * are always stored as strings, so this function converts the given
7505 * value to a string before storing it.
7506 *
7507 * @param cr The ContentResolver to access.
7508 * @param name The name of the setting to modify.
7509 * @param value The new value for the setting.
7510 * @return true if the value was set, false on database errors
7511 */
7512 public static boolean putFloat(ContentResolver cr, String name, float value) {
7513 return putString(cr, name, Float.toString(value));
7514 }
Wink Savillefb40dd42014-06-12 17:02:31 -07007515
7516
7517 /**
7518 * Subscription to be used for voice call on a multi sim device. The supported values
7519 * are 0 = SUB1, 1 = SUB2 and etc.
7520 * @hide
7521 */
7522 public static final String MULTI_SIM_VOICE_CALL_SUBSCRIPTION = "multi_sim_voice_call";
7523
7524 /**
7525 * Used to provide option to user to select subscription during dial.
7526 * The supported values are 0 = disable or 1 = enable prompt.
7527 * @hide
7528 */
7529 public static final String MULTI_SIM_VOICE_PROMPT = "multi_sim_voice_prompt";
7530
7531 /**
7532 * Subscription to be used for data call on a multi sim device. The supported values
7533 * are 0 = SUB1, 1 = SUB2 and etc.
7534 * @hide
7535 */
7536 public static final String MULTI_SIM_DATA_CALL_SUBSCRIPTION = "multi_sim_data_call";
7537
7538 /**
7539 * Subscription to be used for SMS on a multi sim device. The supported values
7540 * are 0 = SUB1, 1 = SUB2 and etc.
7541 * @hide
7542 */
7543 public static final String MULTI_SIM_SMS_SUBSCRIPTION = "multi_sim_sms";
7544
7545 /**
7546 * Used to provide option to user to select subscription during send SMS.
7547 * The value 1 - enable, 0 - disable
7548 * @hide
7549 */
7550 public static final String MULTI_SIM_SMS_PROMPT = "multi_sim_sms_prompt";
7551
7552
7553
7554 /** User preferred subscriptions setting.
7555 * This holds the details of the user selected subscription from the card and
7556 * the activation status. Each settings string have the coma separated values
7557 * iccId,appType,appId,activationStatus,3gppIndex,3gpp2Index
7558 * @hide
7559 */
7560 public static final String[] MULTI_SIM_USER_PREFERRED_SUBS = {"user_preferred_sub1",
7561 "user_preferred_sub2","user_preferred_sub3"};
Christopher Tate06efb532012-08-24 15:29:27 -07007562 }
7563
7564 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007565 * User-defined bookmarks and shortcuts. The target of each bookmark is an
7566 * Intent URL, allowing it to be either a web page or a particular
7567 * application activity.
7568 *
7569 * @hide
7570 */
7571 public static final class Bookmarks implements BaseColumns
7572 {
7573 private static final String TAG = "Bookmarks";
7574
7575 /**
7576 * The content:// style URL for this table
7577 */
7578 public static final Uri CONTENT_URI =
7579 Uri.parse("content://" + AUTHORITY + "/bookmarks");
7580
7581 /**
7582 * The row ID.
7583 * <p>Type: INTEGER</p>
7584 */
7585 public static final String ID = "_id";
7586
7587 /**
7588 * Descriptive name of the bookmark that can be displayed to the user.
7589 * If this is empty, the title should be resolved at display time (use
7590 * {@link #getTitle(Context, Cursor)} any time you want to display the
7591 * title of a bookmark.)
7592 * <P>
7593 * Type: TEXT
7594 * </P>
7595 */
7596 public static final String TITLE = "title";
7597
7598 /**
7599 * Arbitrary string (displayed to the user) that allows bookmarks to be
7600 * organized into categories. There are some special names for
7601 * standard folders, which all start with '@'. The label displayed for
7602 * the folder changes with the locale (via {@link #getLabelForFolder}) but
7603 * the folder name does not change so you can consistently query for
7604 * the folder regardless of the current locale.
7605 *
7606 * <P>Type: TEXT</P>
7607 *
7608 */
7609 public static final String FOLDER = "folder";
7610
7611 /**
7612 * The Intent URL of the bookmark, describing what it points to. This
7613 * value is given to {@link android.content.Intent#getIntent} to create
7614 * an Intent that can be launched.
7615 * <P>Type: TEXT</P>
7616 */
7617 public static final String INTENT = "intent";
7618
7619 /**
7620 * Optional shortcut character associated with this bookmark.
7621 * <P>Type: INTEGER</P>
7622 */
7623 public static final String SHORTCUT = "shortcut";
7624
7625 /**
7626 * The order in which the bookmark should be displayed
7627 * <P>Type: INTEGER</P>
7628 */
7629 public static final String ORDERING = "ordering";
7630
7631 private static final String[] sIntentProjection = { INTENT };
7632 private static final String[] sShortcutProjection = { ID, SHORTCUT };
7633 private static final String sShortcutSelection = SHORTCUT + "=?";
7634
7635 /**
7636 * Convenience function to retrieve the bookmarked Intent for a
7637 * particular shortcut key.
7638 *
7639 * @param cr The ContentResolver to query.
7640 * @param shortcut The shortcut key.
7641 *
7642 * @return Intent The bookmarked URL, or null if there is no bookmark
7643 * matching the given shortcut.
7644 */
7645 public static Intent getIntentForShortcut(ContentResolver cr, char shortcut)
7646 {
7647 Intent intent = null;
7648
7649 Cursor c = cr.query(CONTENT_URI,
7650 sIntentProjection, sShortcutSelection,
7651 new String[] { String.valueOf((int) shortcut) }, ORDERING);
7652 // Keep trying until we find a valid shortcut
7653 try {
7654 while (intent == null && c.moveToNext()) {
7655 try {
7656 String intentURI = c.getString(c.getColumnIndexOrThrow(INTENT));
Christian Mehlmauera34d2c92010-05-25 19:04:20 +02007657 intent = Intent.parseUri(intentURI, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007658 } catch (java.net.URISyntaxException e) {
7659 // The stored URL is bad... ignore it.
7660 } catch (IllegalArgumentException e) {
7661 // Column not found
Dianne Hackborna33e3f72009-09-29 17:28:24 -07007662 Log.w(TAG, "Intent column not found", e);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007663 }
7664 }
7665 } finally {
7666 if (c != null) c.close();
7667 }
7668
7669 return intent;
7670 }
7671
7672 /**
7673 * Add a new bookmark to the system.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007674 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007675 * @param cr The ContentResolver to query.
7676 * @param intent The desired target of the bookmark.
7677 * @param title Bookmark title that is shown to the user; null if none
7678 * or it should be resolved to the intent's title.
7679 * @param folder Folder in which to place the bookmark; null if none.
7680 * @param shortcut Shortcut that will invoke the bookmark; 0 if none. If
7681 * this is non-zero and there is an existing bookmark entry
7682 * with this same shortcut, then that existing shortcut is
7683 * cleared (the bookmark is not removed).
7684 * @return The unique content URL for the new bookmark entry.
7685 */
7686 public static Uri add(ContentResolver cr,
7687 Intent intent,
7688 String title,
7689 String folder,
7690 char shortcut,
7691 int ordering)
7692 {
7693 // If a shortcut is supplied, and it is already defined for
7694 // another bookmark, then remove the old definition.
7695 if (shortcut != 0) {
Jeff Hamilton7cd51ef2010-05-12 17:30:27 -05007696 cr.delete(CONTENT_URI, sShortcutSelection,
7697 new String[] { String.valueOf((int) shortcut) });
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007698 }
7699
7700 ContentValues values = new ContentValues();
7701 if (title != null) values.put(TITLE, title);
7702 if (folder != null) values.put(FOLDER, folder);
Jean-Baptiste Queru3b9f0a32010-06-21 13:46:59 -07007703 values.put(INTENT, intent.toUri(0));
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007704 if (shortcut != 0) values.put(SHORTCUT, (int) shortcut);
7705 values.put(ORDERING, ordering);
7706 return cr.insert(CONTENT_URI, values);
7707 }
7708
7709 /**
7710 * Return the folder name as it should be displayed to the user. This
7711 * takes care of localizing special folders.
7712 *
7713 * @param r Resources object for current locale; only need access to
7714 * system resources.
7715 * @param folder The value found in the {@link #FOLDER} column.
7716 *
7717 * @return CharSequence The label for this folder that should be shown
7718 * to the user.
7719 */
7720 public static CharSequence getLabelForFolder(Resources r, String folder) {
7721 return folder;
7722 }
7723
7724 /**
7725 * Return the title as it should be displayed to the user. This takes
7726 * care of localizing bookmarks that point to activities.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007727 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007728 * @param context A context.
7729 * @param cursor A cursor pointing to the row whose title should be
7730 * returned. The cursor must contain at least the {@link #TITLE}
7731 * and {@link #INTENT} columns.
7732 * @return A title that is localized and can be displayed to the user,
7733 * or the empty string if one could not be found.
7734 */
7735 public static CharSequence getTitle(Context context, Cursor cursor) {
7736 int titleColumn = cursor.getColumnIndex(TITLE);
7737 int intentColumn = cursor.getColumnIndex(INTENT);
7738 if (titleColumn == -1 || intentColumn == -1) {
7739 throw new IllegalArgumentException(
7740 "The cursor must contain the TITLE and INTENT columns.");
7741 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007742
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007743 String title = cursor.getString(titleColumn);
7744 if (!TextUtils.isEmpty(title)) {
7745 return title;
7746 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007747
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007748 String intentUri = cursor.getString(intentColumn);
7749 if (TextUtils.isEmpty(intentUri)) {
7750 return "";
7751 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007752
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007753 Intent intent;
7754 try {
Christian Mehlmauera34d2c92010-05-25 19:04:20 +02007755 intent = Intent.parseUri(intentUri, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007756 } catch (URISyntaxException e) {
7757 return "";
7758 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007759
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007760 PackageManager packageManager = context.getPackageManager();
7761 ResolveInfo info = packageManager.resolveActivity(intent, 0);
7762 return info != null ? info.loadLabel(packageManager) : "";
7763 }
7764 }
7765
7766 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007767 * Returns the device ID that we should use when connecting to the mobile gtalk server.
7768 * This is a string like "android-0x1242", where the hex string is the Android ID obtained
7769 * from the GoogleLoginService.
7770 *
7771 * @param androidId The Android ID for this device.
7772 * @return The device ID that should be used when connecting to the mobile gtalk server.
7773 * @hide
7774 */
7775 public static String getGTalkDeviceId(long androidId) {
7776 return "android-" + Long.toHexString(androidId);
7777 }
7778}