blob: 7b3ecebec0ba76a5c1435def811a8b023cec716f [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;
68import java.util.regex.Pattern;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080069
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080070/**
71 * The Settings provider contains global system-level device preferences.
72 */
73public final class Settings {
74
75 // Intent actions for Settings
76
77 /**
78 * Activity Action: Show system settings.
79 * <p>
80 * Input: Nothing.
81 * <p>
Gilles Debunnee90bed12011-08-30 14:28:27 -070082 * Output: Nothing.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080083 */
84 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
85 public static final String ACTION_SETTINGS = "android.settings.SETTINGS";
86
87 /**
88 * Activity Action: Show settings to allow configuration of APNs.
89 * <p>
90 * Input: Nothing.
91 * <p>
Gilles Debunnee90bed12011-08-30 14:28:27 -070092 * Output: Nothing.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080093 */
94 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
95 public static final String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS";
96
97 /**
98 * Activity Action: Show settings to allow configuration of current location
99 * sources.
100 * <p>
101 * In some cases, a matching Activity may not exist, so ensure you
102 * safeguard against this.
103 * <p>
104 * Input: Nothing.
105 * <p>
106 * Output: Nothing.
107 */
108 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
109 public static final String ACTION_LOCATION_SOURCE_SETTINGS =
110 "android.settings.LOCATION_SOURCE_SETTINGS";
111
112 /**
113 * Activity Action: Show settings to allow configuration of wireless controls
114 * such as Wi-Fi, Bluetooth and Mobile networks.
115 * <p>
116 * In some cases, a matching Activity may not exist, so ensure you
117 * safeguard against this.
118 * <p>
119 * Input: Nothing.
120 * <p>
121 * Output: Nothing.
122 */
123 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
124 public static final String ACTION_WIRELESS_SETTINGS =
125 "android.settings.WIRELESS_SETTINGS";
126
127 /**
128 * Activity Action: Show settings to allow entering/exiting airplane mode.
129 * <p>
130 * In some cases, a matching Activity may not exist, so ensure you
131 * safeguard against this.
132 * <p>
133 * Input: Nothing.
134 * <p>
135 * Output: Nothing.
136 */
137 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
138 public static final String ACTION_AIRPLANE_MODE_SETTINGS =
139 "android.settings.AIRPLANE_MODE_SETTINGS";
140
141 /**
Barnaby James48f35522014-07-16 14:27:39 -0700142 * Activity Action: Modify Airplane mode settings using the users voice.
143 * <p>
144 * In some cases, a matching Activity may not exist, so ensure you safeguard against this.
145 * <p>
146 * This intent MUST be started using
147 * {@link android.service.voice.VoiceInteractionSession#startVoiceActivity
148 * startVoiceActivity}.
149 * <p>
150 * To tell which state airplane mode should be set to, add the
151 * {@link #EXTRA_AIRPLANE_MODE_ENABLED} extra to this Intent with the state specified.
152 * If there is no extra in this Intent, no changes will be made.
153 * <p>
154 * The activity should verify that
155 * {@link android.app.Activity#isVoiceInteraction isVoiceInteraction} returns true before
156 * modifying the setting.
157 * <p>
158 * Input: Nothing.
159 * <p>
160 * Output: Nothing.
161 */
162 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
163 public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE =
164 "android.settings.VOICE_CONTROL_AIRPLANE_MODE";
165
166 /**
Dianne Hackborndd9b82c2009-09-03 00:18:47 -0700167 * Activity Action: Show settings for accessibility modules.
168 * <p>
169 * In some cases, a matching Activity may not exist, so ensure you
170 * safeguard against this.
171 * <p>
172 * Input: Nothing.
173 * <p>
174 * Output: Nothing.
175 */
176 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
177 public static final String ACTION_ACCESSIBILITY_SETTINGS =
178 "android.settings.ACCESSIBILITY_SETTINGS";
179
180 /**
Dianne Hackborna3fb40d2014-08-12 15:06:50 -0700181 * Activity Action: Show settings to control access to usage information.
182 * <p>
183 * In some cases, a matching Activity may not exist, so ensure you
184 * safeguard against this.
185 * <p>
186 * Input: Nothing.
187 * <p>
188 * Output: Nothing.
189 */
190 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
191 public static final String ACTION_USAGE_ACCESS_SETTINGS =
192 "android.settings.USAGE_ACCESS_SETTINGS";
193
194 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800195 * Activity Action: Show settings to allow configuration of security and
196 * location privacy.
197 * <p>
198 * In some cases, a matching Activity may not exist, so ensure you
199 * safeguard against this.
200 * <p>
201 * Input: Nothing.
202 * <p>
203 * Output: Nothing.
204 */
205 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
206 public static final String ACTION_SECURITY_SETTINGS =
207 "android.settings.SECURITY_SETTINGS";
208
209 /**
Maggie Benthall0469f412013-09-05 15:30:26 -0400210 * Activity Action: Show trusted credentials settings, opening to the user tab,
211 * to allow management of installed credentials.
212 * <p>
213 * In some cases, a matching Activity may not exist, so ensure you
214 * safeguard against this.
215 * <p>
216 * Input: Nothing.
217 * <p>
218 * Output: Nothing.
219 * @hide
220 */
221 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
222 public static final String ACTION_TRUSTED_CREDENTIALS_USER =
223 "com.android.settings.TRUSTED_CREDENTIALS_USER";
224
225 /**
226 * Activity Action: Show dialog explaining that an installed CA cert may enable
227 * monitoring of encrypted network traffic.
228 * <p>
229 * In some cases, a matching Activity may not exist, so ensure you
230 * safeguard against this.
231 * <p>
232 * Input: Nothing.
233 * <p>
234 * Output: Nothing.
235 * @hide
236 */
237 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
238 public static final String ACTION_MONITORING_CERT_INFO =
239 "com.android.settings.MONITORING_CERT_INFO";
240
241 /**
Amith Yamasanic15255a2009-09-23 15:33:19 -0700242 * Activity Action: Show settings to allow configuration of privacy options.
243 * <p>
244 * In some cases, a matching Activity may not exist, so ensure you
245 * safeguard against this.
246 * <p>
247 * Input: Nothing.
248 * <p>
249 * Output: Nothing.
250 */
251 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
252 public static final String ACTION_PRIVACY_SETTINGS =
253 "android.settings.PRIVACY_SETTINGS";
254
255 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800256 * Activity Action: Show settings to allow configuration of Wi-Fi.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800257 * <p>
258 * In some cases, a matching Activity may not exist, so ensure you
259 * safeguard against this.
260 * <p>
261 * Input: Nothing.
262 * <p>
263 * Output: Nothing.
264
265 */
266 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
267 public static final String ACTION_WIFI_SETTINGS =
268 "android.settings.WIFI_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700269
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800270 /**
271 * Activity Action: Show settings to allow configuration of a static IP
272 * address for Wi-Fi.
273 * <p>
274 * In some cases, a matching Activity may not exist, so ensure you safeguard
275 * against this.
276 * <p>
277 * Input: Nothing.
278 * <p>
279 * Output: Nothing.
280 */
281 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
282 public static final String ACTION_WIFI_IP_SETTINGS =
283 "android.settings.WIFI_IP_SETTINGS";
284
285 /**
286 * Activity Action: Show settings to allow configuration of Bluetooth.
287 * <p>
288 * In some cases, a matching Activity may not exist, so ensure you
289 * safeguard against this.
290 * <p>
291 * Input: Nothing.
292 * <p>
293 * Output: Nothing.
294 */
295 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
296 public static final String ACTION_BLUETOOTH_SETTINGS =
297 "android.settings.BLUETOOTH_SETTINGS";
298
299 /**
Jeff Brown89d55462012-09-19 11:33:42 -0700300 * Activity Action: Show settings to allow configuration of Wifi Displays.
301 * <p>
302 * In some cases, a matching Activity may not exist, so ensure you
303 * safeguard against this.
304 * <p>
305 * Input: Nothing.
306 * <p>
307 * Output: Nothing.
308 * @hide
309 */
310 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
311 public static final String ACTION_WIFI_DISPLAY_SETTINGS =
312 "android.settings.WIFI_DISPLAY_SETTINGS";
313
314 /**
Jeff Brown1a937b02014-07-01 22:13:04 -0700315 * Activity Action: Show settings to allow configuration of
316 * {@link android.media.routing.MediaRouteService media route providers}.
317 * <p>
318 * In some cases, a matching Activity may not exist, so ensure you
319 * safeguard against this.
320 * <p>
321 * Input: Nothing.
322 * <p>
323 * Output: Nothing.
324 */
325 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
326 public static final String ACTION_CAST_SETTINGS =
327 "android.settings.CAST_SETTINGS";
328
329 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800330 * Activity Action: Show settings to allow configuration of date and time.
331 * <p>
332 * In some cases, a matching Activity may not exist, so ensure you
333 * safeguard against this.
334 * <p>
335 * Input: Nothing.
336 * <p>
337 * Output: Nothing.
338 */
339 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
340 public static final String ACTION_DATE_SETTINGS =
341 "android.settings.DATE_SETTINGS";
342
343 /**
344 * Activity Action: Show settings to allow configuration of sound and volume.
345 * <p>
346 * In some cases, a matching Activity may not exist, so ensure you
347 * safeguard against this.
348 * <p>
349 * Input: Nothing.
350 * <p>
351 * Output: Nothing.
352 */
353 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
354 public static final String ACTION_SOUND_SETTINGS =
355 "android.settings.SOUND_SETTINGS";
356
357 /**
358 * Activity Action: Show settings to allow configuration of display.
359 * <p>
360 * In some cases, a matching Activity may not exist, so ensure you
361 * safeguard against this.
362 * <p>
363 * Input: Nothing.
364 * <p>
365 * Output: Nothing.
366 */
367 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
368 public static final String ACTION_DISPLAY_SETTINGS =
369 "android.settings.DISPLAY_SETTINGS";
370
371 /**
372 * Activity Action: Show settings to allow configuration of locale.
373 * <p>
374 * In some cases, a matching Activity may not exist, so ensure you
375 * safeguard against this.
376 * <p>
377 * Input: Nothing.
378 * <p>
379 * Output: Nothing.
380 */
381 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
382 public static final String ACTION_LOCALE_SETTINGS =
383 "android.settings.LOCALE_SETTINGS";
384
385 /**
386 * Activity Action: Show settings to configure input methods, in particular
387 * allowing the user to enable input methods.
388 * <p>
389 * In some cases, a matching Activity may not exist, so ensure you
390 * safeguard against this.
391 * <p>
392 * Input: Nothing.
393 * <p>
394 * Output: Nothing.
395 */
396 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
Dianne Hackborna3fb40d2014-08-12 15:06:50 -0700397 public static final String ACTION_VOICE_INPUT_SETTINGS =
398 "android.settings.VOICE_INPUT_SETTINGS";
399
400 /**
401 * Activity Action: Show settings to configure input methods, in particular
402 * allowing the user to enable input methods.
403 * <p>
404 * In some cases, a matching Activity may not exist, so ensure you
405 * safeguard against this.
406 * <p>
407 * Input: Nothing.
408 * <p>
409 * Output: Nothing.
410 */
411 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800412 public static final String ACTION_INPUT_METHOD_SETTINGS =
413 "android.settings.INPUT_METHOD_SETTINGS";
414
415 /**
Tadashi G. Takaokaf49688f2011-01-20 17:56:13 +0900416 * Activity Action: Show settings to enable/disable input method subtypes.
satok86417ea2010-10-27 14:11:03 +0900417 * <p>
418 * In some cases, a matching Activity may not exist, so ensure you
419 * safeguard against this.
420 * <p>
Tadashi G. Takaoka25480202011-01-20 23:13:02 +0900421 * To tell which input method's subtypes are displayed in the settings, add
422 * {@link #EXTRA_INPUT_METHOD_ID} extra to this Intent with the input method id.
423 * If there is no extra in this Intent, subtypes from all installed input methods
424 * will be displayed in the settings.
425 *
426 * @see android.view.inputmethod.InputMethodInfo#getId
427 * <p>
satok86417ea2010-10-27 14:11:03 +0900428 * Input: Nothing.
429 * <p>
430 * Output: Nothing.
431 */
432 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
Tadashi G. Takaokaf49688f2011-01-20 17:56:13 +0900433 public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS =
434 "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
satok86417ea2010-10-27 14:11:03 +0900435
436 /**
satok7cfc0ed2011-06-20 21:29:36 +0900437 * Activity Action: Show a dialog to select input method.
438 * <p>
439 * In some cases, a matching Activity may not exist, so ensure you
440 * safeguard against this.
441 * <p>
442 * Input: Nothing.
443 * <p>
444 * Output: Nothing.
445 * @hide
446 */
447 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
448 public static final String ACTION_SHOW_INPUT_METHOD_PICKER =
449 "android.settings.SHOW_INPUT_METHOD_PICKER";
450
451 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800452 * Activity Action: Show settings to manage the user input dictionary.
453 * <p>
Chet Haasee8222dd2013-09-05 07:44:18 -0700454 * Starting with {@link android.os.Build.VERSION_CODES#KITKAT},
Satoshi Kataoka2aa2bc52013-07-30 14:25:11 +0900455 * it is guaranteed there will always be an appropriate implementation for this Intent action.
456 * 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 -0800457 * <p>
458 * Input: Nothing.
459 * <p>
460 * Output: Nothing.
461 */
462 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
463 public static final String ACTION_USER_DICTIONARY_SETTINGS =
464 "android.settings.USER_DICTIONARY_SETTINGS";
465
466 /**
Gilles Debunnee90bed12011-08-30 14:28:27 -0700467 * Activity Action: Adds a word to the user dictionary.
468 * <p>
469 * In some cases, a matching Activity may not exist, so ensure you
470 * safeguard against this.
471 * <p>
472 * Input: An extra with key <code>word</code> that contains the word
473 * that should be added to the dictionary.
474 * <p>
475 * Output: Nothing.
476 *
477 * @hide
478 */
479 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
480 public static final String ACTION_USER_DICTIONARY_INSERT =
481 "com.android.settings.USER_DICTIONARY_INSERT";
482
483 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800484 * Activity Action: Show settings to allow configuration of application-related settings.
485 * <p>
486 * In some cases, a matching Activity may not exist, so ensure you
487 * safeguard against this.
488 * <p>
489 * Input: Nothing.
490 * <p>
491 * Output: Nothing.
492 */
493 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
494 public static final String ACTION_APPLICATION_SETTINGS =
495 "android.settings.APPLICATION_SETTINGS";
496
497 /**
498 * Activity Action: Show settings to allow configuration of application
Dianne Hackborn8d866e52012-10-10 18:39:45 -0700499 * development-related settings. As of
500 * {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} this action is
501 * a required part of the platform.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800502 * <p>
503 * Input: Nothing.
504 * <p>
505 * Output: Nothing.
506 */
507 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
508 public static final String ACTION_APPLICATION_DEVELOPMENT_SETTINGS =
509 "android.settings.APPLICATION_DEVELOPMENT_SETTINGS";
510
511 /**
512 * Activity Action: Show settings to allow configuration of quick launch shortcuts.
513 * <p>
514 * In some cases, a matching Activity may not exist, so ensure you
515 * safeguard against this.
516 * <p>
517 * Input: Nothing.
518 * <p>
519 * Output: Nothing.
520 */
521 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
522 public static final String ACTION_QUICK_LAUNCH_SETTINGS =
523 "android.settings.QUICK_LAUNCH_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700524
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800525 /**
526 * Activity Action: Show settings to manage installed applications.
527 * <p>
528 * In some cases, a matching Activity may not exist, so ensure you
529 * safeguard against this.
530 * <p>
531 * Input: Nothing.
532 * <p>
533 * Output: Nothing.
534 */
535 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
536 public static final String ACTION_MANAGE_APPLICATIONS_SETTINGS =
537 "android.settings.MANAGE_APPLICATIONS_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700538
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800539 /**
Winson Chung44e8ff92010-09-27 14:36:52 -0700540 * Activity Action: Show settings to manage all applications.
541 * <p>
542 * In some cases, a matching Activity may not exist, so ensure you
543 * safeguard against this.
544 * <p>
545 * Input: Nothing.
546 * <p>
547 * Output: Nothing.
548 */
549 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
550 public static final String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS =
551 "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS";
552
553 /**
Dianne Hackbornb7bb3b32010-06-06 22:47:50 -0700554 * Activity Action: Show screen of details about a particular application.
555 * <p>
556 * In some cases, a matching Activity may not exist, so ensure you
557 * safeguard against this.
558 * <p>
559 * Input: The Intent's data URI specifies the application package name
560 * to be shown, with the "package" scheme. That is "package:com.my.app".
561 * <p>
562 * Output: Nothing.
563 */
564 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
565 public static final String ACTION_APPLICATION_DETAILS_SETTINGS =
566 "android.settings.APPLICATION_DETAILS_SETTINGS";
567
568 /**
Dianne Hackborn35654b62013-01-14 17:38:02 -0800569 * @hide
570 * Activity Action: Show the "app ops" settings screen.
571 * <p>
572 * Input: Nothing.
573 * <p>
574 * Output: Nothing.
575 */
576 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
577 public static final String ACTION_APP_OPS_SETTINGS =
578 "android.settings.APP_OPS_SETTINGS";
579
580 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800581 * Activity Action: Show settings for system update functionality.
582 * <p>
583 * In some cases, a matching Activity may not exist, so ensure you
584 * safeguard against this.
585 * <p>
586 * Input: Nothing.
587 * <p>
588 * Output: Nothing.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700589 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800590 * @hide
591 */
592 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
593 public static final String ACTION_SYSTEM_UPDATE_SETTINGS =
594 "android.settings.SYSTEM_UPDATE_SETTINGS";
595
596 /**
597 * Activity Action: Show settings to allow configuration of sync settings.
598 * <p>
599 * In some cases, a matching Activity may not exist, so ensure you
600 * safeguard against this.
601 * <p>
Erikeebc8e22010-02-18 13:27:19 -0800602 * The account types available to add via the add account button may be restricted by adding an
603 * {@link #EXTRA_AUTHORITIES} extra to this Intent with one or more syncable content provider's
604 * authorities. Only account types which can sync with that content provider will be offered to
605 * the user.
606 * <p>
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800607 * Input: Nothing.
608 * <p>
609 * Output: Nothing.
610 */
611 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
612 public static final String ACTION_SYNC_SETTINGS =
613 "android.settings.SYNC_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700614
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800615 /**
Erikeebc8e22010-02-18 13:27:19 -0800616 * Activity Action: Show add account screen for creating a new account.
617 * <p>
618 * In some cases, a matching Activity may not exist, so ensure you
619 * safeguard against this.
620 * <p>
621 * The account types available to add may be restricted by adding an {@link #EXTRA_AUTHORITIES}
622 * extra to the Intent with one or more syncable content provider's authorities. Only account
623 * types which can sync with that content provider will be offered to the user.
624 * <p>
Alon Albert50359c22013-02-26 14:47:48 -0800625 * Account types can also be filtered by adding an {@link #EXTRA_ACCOUNT_TYPES} extra to the
626 * Intent with one or more account types.
627 * <p>
Erikeebc8e22010-02-18 13:27:19 -0800628 * Input: Nothing.
629 * <p>
630 * Output: Nothing.
631 */
632 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
633 public static final String ACTION_ADD_ACCOUNT =
634 "android.settings.ADD_ACCOUNT_SETTINGS";
635
636 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800637 * Activity Action: Show settings for selecting the network operator.
638 * <p>
639 * In some cases, a matching Activity may not exist, so ensure you
640 * safeguard against this.
641 * <p>
642 * Input: Nothing.
643 * <p>
644 * Output: Nothing.
645 */
646 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
647 public static final String ACTION_NETWORK_OPERATOR_SETTINGS =
648 "android.settings.NETWORK_OPERATOR_SETTINGS";
649
650 /**
651 * Activity Action: Show settings for selection of 2G/3G.
652 * <p>
653 * In some cases, a matching Activity may not exist, so ensure you
654 * safeguard against this.
655 * <p>
656 * Input: Nothing.
657 * <p>
658 * Output: Nothing.
659 */
660 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
661 public static final String ACTION_DATA_ROAMING_SETTINGS =
662 "android.settings.DATA_ROAMING_SETTINGS";
663
664 /**
665 * Activity Action: Show settings for internal storage.
666 * <p>
667 * In some cases, a matching Activity may not exist, so ensure you
668 * safeguard against this.
669 * <p>
670 * Input: Nothing.
671 * <p>
672 * Output: Nothing.
673 */
674 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
675 public static final String ACTION_INTERNAL_STORAGE_SETTINGS =
676 "android.settings.INTERNAL_STORAGE_SETTINGS";
677 /**
678 * Activity Action: Show settings for memory card storage.
679 * <p>
680 * In some cases, a matching Activity may not exist, so ensure you
681 * safeguard against this.
682 * <p>
683 * Input: Nothing.
684 * <p>
685 * Output: Nothing.
686 */
687 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
688 public static final String ACTION_MEMORY_CARD_SETTINGS =
689 "android.settings.MEMORY_CARD_SETTINGS";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -0700690
Justin Mattsonef340352010-01-13 21:05:46 -0800691 /**
692 * Activity Action: Show settings for global search.
693 * <p>
694 * In some cases, a matching Activity may not exist, so ensure you
695 * safeguard against this.
696 * <p>
697 * Input: Nothing.
698 * <p>
699 * Output: Nothing
700 */
701 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
702 public static final String ACTION_SEARCH_SETTINGS =
703 "android.search.action.SEARCH_SETTINGS";
704
Daniel Sandler9d8b8762010-01-22 20:50:15 -0500705 /**
706 * Activity Action: Show general device information settings (serial
707 * number, software version, phone number, etc.).
708 * <p>
709 * In some cases, a matching Activity may not exist, so ensure you
710 * safeguard against this.
711 * <p>
712 * Input: Nothing.
713 * <p>
714 * Output: Nothing
715 */
716 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
717 public static final String ACTION_DEVICE_INFO_SETTINGS =
718 "android.settings.DEVICE_INFO_SETTINGS";
719
Martijn Coenen9b3c83f2011-07-28 11:21:39 -0500720 /**
Nick Pellycccf01d2011-10-31 14:49:40 -0700721 * Activity Action: Show NFC settings.
722 * <p>
723 * This shows UI that allows NFC to be turned on or off.
Martijn Coenen9b3c83f2011-07-28 11:21:39 -0500724 * <p>
725 * In some cases, a matching Activity may not exist, so ensure you
726 * safeguard against this.
727 * <p>
728 * Input: Nothing.
729 * <p>
730 * Output: Nothing
Nick Pellycccf01d2011-10-31 14:49:40 -0700731 * @see android.nfc.NfcAdapter#isEnabled()
732 */
733 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
734 public static final String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS";
735
736 /**
737 * Activity Action: Show NFC Sharing settings.
738 * <p>
739 * This shows UI that allows NDEF Push (Android Beam) to be turned on or
740 * off.
741 * <p>
742 * In some cases, a matching Activity may not exist, so ensure you
743 * safeguard against this.
744 * <p>
745 * Input: Nothing.
746 * <p>
747 * Output: Nothing
748 * @see android.nfc.NfcAdapter#isNdefPushEnabled()
Martijn Coenen9b3c83f2011-07-28 11:21:39 -0500749 */
750 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
751 public static final String ACTION_NFCSHARING_SETTINGS =
752 "android.settings.NFCSHARING_SETTINGS";
753
Daniel Sandlerc08cd022012-11-27 22:47:37 -0500754 /**
Martijn Coenen62c196a2013-08-09 13:43:34 -0700755 * Activity Action: Show NFC Tap & Pay settings
756 * <p>
757 * This shows UI that allows the user to configure Tap&Pay
758 * settings.
759 * <p>
760 * In some cases, a matching Activity may not exist, so ensure you
761 * safeguard against this.
762 * <p>
763 * Input: Nothing.
764 * <p>
765 * Output: Nothing
766 */
767 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
768 public static final String ACTION_NFC_PAYMENT_SETTINGS =
769 "android.settings.NFC_PAYMENT_SETTINGS";
770
771 /**
Daniel Sandlerc08cd022012-11-27 22:47:37 -0500772 * Activity Action: Show Daydream settings.
773 * <p>
774 * In some cases, a matching Activity may not exist, so ensure you
775 * safeguard against this.
776 * <p>
777 * Input: Nothing.
778 * <p>
779 * Output: Nothing.
780 * @see android.service.dreams.DreamService
Daniel Sandlerc08cd022012-11-27 22:47:37 -0500781 */
782 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
783 public static final String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS";
784
Daniel Sandler5feceeb2013-03-22 18:29:23 -0700785 /**
786 * Activity Action: Show Notification listener settings.
787 * <p>
788 * In some cases, a matching Activity may not exist, so ensure you
789 * safeguard against this.
790 * <p>
791 * Input: Nothing.
792 * <p>
793 * Output: Nothing.
794 * @see android.service.notification.NotificationListenerService
Daniel Sandler5feceeb2013-03-22 18:29:23 -0700795 */
796 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
797 public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS
Chris Wren8326a8a2014-10-22 14:13:32 -0400798 = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";
Daniel Sandler5feceeb2013-03-22 18:29:23 -0700799
Alan Viverette69ce69b2013-08-29 12:23:48 -0700800 /**
John Spurlock7340fc82014-04-24 18:50:12 -0400801 * @hide
802 */
803 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
804 public static final String ACTION_CONDITION_PROVIDER_SETTINGS
805 = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS";
806
807 /**
Alan Viverette69ce69b2013-08-29 12:23:48 -0700808 * Activity Action: Show settings for video captioning.
809 * <p>
810 * In some cases, a matching Activity may not exist, so ensure you safeguard
811 * against this.
812 * <p>
813 * Input: Nothing.
814 * <p>
815 * Output: Nothing.
816 */
817 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
818 public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
819
Svetoslav773f54d2013-09-03 14:01:43 -0700820 /**
821 * Activity Action: Show the top level print settings.
822 * <p>
823 * In some cases, a matching Activity may not exist, so ensure you
824 * safeguard against this.
825 * <p>
826 * Input: Nothing.
827 * <p>
828 * Output: Nothing.
829 */
830 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
831 public static final String ACTION_PRINT_SETTINGS =
832 "android.settings.ACTION_PRINT_SETTINGS";
833
John Spurlockde547002014-02-28 17:50:39 -0500834 /**
835 * Activity Action: Show Zen Mode configuration settings.
836 *
837 * @hide
838 */
839 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
840 public static final String ACTION_ZEN_MODE_SETTINGS = "android.settings.ZEN_MODE_SETTINGS";
841
Santos Cordona4c75242014-07-09 12:07:51 -0700842 /**
843 * Activity Action: Show the regulatory information screen for the device.
844 * <p>
845 * In some cases, a matching Activity may not exist, so ensure you safeguard
846 * against this.
847 * <p>
848 * Input: Nothing.
849 * <p>
850 * Output: Nothing.
851 */
Jeff Sharkeydd77fda2014-04-16 17:23:08 -0700852 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
853 public static final String
854 ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
855
Jerome Poichet7974cb32014-05-14 12:04:43 -0700856 /**
857 * Activity Action: Show Device Name Settings.
858 * <p>
859 * In some cases, a matching Activity may not exist, so ensure you safeguard
Tim Kilbourn87cd0dc2014-04-14 15:37:51 -0700860 * against this.
Jerome Poichet7974cb32014-05-14 12:04:43 -0700861 *
862 * @hide
863 */
864 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
865 public static final String DEVICE_NAME_SETTINGS = "android.settings.DEVICE_NAME";
866
Tim Kilbourn87cd0dc2014-04-14 15:37:51 -0700867 /**
868 * Activity Action: Show pairing settings.
869 * <p>
870 * In some cases, a matching Activity may not exist, so ensure you safeguard
871 * against this.
872 *
873 * @hide
874 */
875 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
876 public static final String ACTION_PAIRING_SETTINGS = "android.settings.PAIRING_SETTINGS";
877
John Spurlockf8f524c2014-06-10 14:47:29 -0400878 /**
879 * Activity Action: Show battery saver settings.
John Spurlock73466662014-10-30 13:42:05 -0400880 * <p>
881 * In some cases, a matching Activity may not exist, so ensure you safeguard
882 * against this.
John Spurlockf8f524c2014-06-10 14:47:29 -0400883 */
884 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
885 public static final String ACTION_BATTERY_SAVER_SETTINGS
886 = "android.settings.BATTERY_SAVER_SETTINGS";
887
Amith Yamasanieb7b94a2014-07-14 18:02:08 -0700888 /**
889 * Activity Action: Show Home selection settings. If there are multiple activities
890 * that can satisfy the {@link Intent#CATEGORY_HOME} intent, this screen allows you
891 * to pick your preferred activity.
892 */
893 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
894 public static final String ACTION_HOME_SETTINGS
895 = "android.settings.HOME_SETTINGS";
896
John Spurlock2b0e09c2014-07-27 13:27:47 -0400897 /**
898 * Activity Action: Show notification settings.
899 *
900 * @hide
901 */
902 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
903 public static final String ACTION_NOTIFICATION_SETTINGS
904 = "android.settings.NOTIFICATION_SETTINGS";
905
906 /**
907 * Activity Action: Show notification settings for a single app.
908 *
909 * @hide
910 */
911 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
912 public static final String ACTION_APP_NOTIFICATION_SETTINGS
913 = "android.settings.APP_NOTIFICATION_SETTINGS";
914
Chris Wrencd8f4f72014-08-27 18:48:13 -0400915 /**
916 * Activity Action: Show notification redaction settings.
917 *
918 * @hide
919 */
920 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
921 public static final String ACTION_APP_NOTIFICATION_REDACTION
922 = "android.settings.ACTION_APP_NOTIFICATION_REDACTION";
923
John Spurlock2b0e09c2014-07-27 13:27:47 -0400924 /** @hide */ public static final String EXTRA_APP_UID = "app_uid";
925 /** @hide */ public static final String EXTRA_APP_PACKAGE = "app_package";
926
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800927 // End of Intent actions for Settings
928
Erikeebc8e22010-02-18 13:27:19 -0800929 /**
Brad Fitzpatrick1877d012010-03-04 17:48:13 -0800930 * @hide - Private call() method on SettingsProvider to read from 'system' table.
931 */
932 public static final String CALL_METHOD_GET_SYSTEM = "GET_system";
933
934 /**
935 * @hide - Private call() method on SettingsProvider to read from 'secure' table.
936 */
937 public static final String CALL_METHOD_GET_SECURE = "GET_secure";
938
939 /**
Christopher Tate06efb532012-08-24 15:29:27 -0700940 * @hide - Private call() method on SettingsProvider to read from 'global' table.
941 */
942 public static final String CALL_METHOD_GET_GLOBAL = "GET_global";
943
944 /**
945 * @hide - User handle argument extra to the fast-path call()-based requests
946 */
947 public static final String CALL_METHOD_USER_KEY = "_user";
948
949 /** @hide - Private call() method to write to 'system' table */
950 public static final String CALL_METHOD_PUT_SYSTEM = "PUT_system";
951
952 /** @hide - Private call() method to write to 'secure' table */
953 public static final String CALL_METHOD_PUT_SECURE = "PUT_secure";
954
955 /** @hide - Private call() method to write to 'global' table */
956 public static final String CALL_METHOD_PUT_GLOBAL= "PUT_global";
957
958 /**
Erikeebc8e22010-02-18 13:27:19 -0800959 * Activity Extra: Limit available options in launched activity based on the given authority.
960 * <p>
961 * This can be passed as an extra field in an Activity Intent with one or more syncable content
962 * provider's authorities as a String[]. This field is used by some intents to alter the
963 * behavior of the called activity.
964 * <p>
965 * Example: The {@link #ACTION_ADD_ACCOUNT} intent restricts the account types available based
966 * on the authority given.
967 */
Alon Albert50359c22013-02-26 14:47:48 -0800968 public static final String EXTRA_AUTHORITIES = "authorities";
969
Alon Albertd35bf1f2013-04-18 14:26:51 -0700970 /**
971 * Activity Extra: Limit available options in launched activity based on the given account
972 * types.
973 * <p>
974 * This can be passed as an extra field in an Activity Intent with one or more account types
975 * as a String[]. This field is used by some intents to alter the behavior of the called
976 * activity.
977 * <p>
978 * Example: The {@link #ACTION_ADD_ACCOUNT} intent restricts the account types to the specified
979 * list.
980 */
Alon Albert50359c22013-02-26 14:47:48 -0800981 public static final String EXTRA_ACCOUNT_TYPES = "account_types";
Erikeebc8e22010-02-18 13:27:19 -0800982
Tadashi G. Takaoka25480202011-01-20 23:13:02 +0900983 public static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
984
Barnaby James48f35522014-07-16 14:27:39 -0700985 /**
Michael Wrightc93fbd12014-09-22 20:07:59 -0700986 * Activity Extra: The device identifier to act upon.
987 * <p>
988 * This can be passed as an extra field in an Activity Intent with a single
989 * InputDeviceIdentifier. This field is used by some activities to jump straight into the
990 * settings for the given device.
991 * <p>
Dianne Hackbornad6a99b2014-11-18 10:11:10 -0800992 * Example: The {@link #ACTION_INPUT_METHOD_SETTINGS} intent opens the keyboard layout
993 * dialog for the given device.
Michael Wrightc93fbd12014-09-22 20:07:59 -0700994 * @hide
995 */
996 public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier";
997
998 /**
Barnaby James48f35522014-07-16 14:27:39 -0700999 * Activity Extra: Enable or disable Airplane Mode.
1000 * <p>
1001 * This can be passed as an extra field to the {@link #ACTION_VOICE_CONTROL_AIRPLANE_MODE}
1002 * intent as a boolean.
1003 */
1004 public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
1005
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001006 private static final String JID_RESOURCE_PREFIX = "android";
1007
1008 public static final String AUTHORITY = "settings";
1009
1010 private static final String TAG = "Settings";
Christopher Tate06efb532012-08-24 15:29:27 -07001011 private static final boolean LOCAL_LOGV = false;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001012
David Christie3f7b6522013-08-06 19:19:08 -07001013 // Lock ensures that when enabling/disabling the master location switch, we don't end up
1014 // with a partial enable/disable state in multi-threaded situations.
1015 private static final Object mLocationSettingsLock = new Object();
1016
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001017 public static class SettingNotFoundException extends AndroidException {
1018 public SettingNotFoundException(String msg) {
1019 super(msg);
1020 }
1021 }
1022
1023 /**
1024 * Common base for tables of name/value settings.
1025 */
1026 public static class NameValueTable implements BaseColumns {
1027 public static final String NAME = "name";
1028 public static final String VALUE = "value";
1029
1030 protected static boolean putString(ContentResolver resolver, Uri uri,
1031 String name, String value) {
1032 // The database will take care of replacing duplicates.
1033 try {
1034 ContentValues values = new ContentValues();
1035 values.put(NAME, name);
1036 values.put(VALUE, value);
1037 resolver.insert(uri, values);
1038 return true;
1039 } catch (SQLException e) {
Dianne Hackborna33e3f72009-09-29 17:28:24 -07001040 Log.w(TAG, "Can't set key " + name + " in " + uri, e);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001041 return false;
1042 }
1043 }
1044
1045 public static Uri getUriFor(Uri uri, String name) {
1046 return Uri.withAppendedPath(uri, name);
1047 }
1048 }
1049
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001050 // Thread-safe.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001051 private static class NameValueCache {
1052 private final String mVersionSystemProperty;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001053 private final Uri mUri;
1054
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001055 private static final String[] SELECT_VALUE =
1056 new String[] { Settings.NameValueTable.VALUE };
1057 private static final String NAME_EQ_PLACEHOLDER = "name=?";
1058
1059 // Must synchronize on 'this' to access mValues and mValuesVersion.
Dan Egnor799f7212009-11-24 16:24:44 -08001060 private final HashMap<String, String> mValues = new HashMap<String, String>();
1061 private long mValuesVersion = 0;
1062
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001063 // Initially null; set lazily and held forever. Synchronized on 'this'.
1064 private IContentProvider mContentProvider = null;
1065
1066 // The method we'll call (or null, to not use) on the provider
1067 // for the fast path of retrieving settings.
Christopher Tate06efb532012-08-24 15:29:27 -07001068 private final String mCallGetCommand;
1069 private final String mCallSetCommand;
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001070
Christopher Tate06efb532012-08-24 15:29:27 -07001071 public NameValueCache(String versionSystemProperty, Uri uri,
1072 String getCommand, String setCommand) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001073 mVersionSystemProperty = versionSystemProperty;
1074 mUri = uri;
Christopher Tate06efb532012-08-24 15:29:27 -07001075 mCallGetCommand = getCommand;
1076 mCallSetCommand = setCommand;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001077 }
1078
Christopher Tate06efb532012-08-24 15:29:27 -07001079 private IContentProvider lazyGetProvider(ContentResolver cr) {
1080 IContentProvider cp = null;
1081 synchronized (this) {
1082 cp = mContentProvider;
1083 if (cp == null) {
1084 cp = mContentProvider = cr.acquireProvider(mUri.getAuthority());
1085 }
1086 }
1087 return cp;
1088 }
1089
1090 public boolean putStringForUser(ContentResolver cr, String name, String value,
1091 final int userHandle) {
1092 try {
1093 Bundle arg = new Bundle();
1094 arg.putString(Settings.NameValueTable.VALUE, value);
Christopher Tated5fe1472012-09-10 15:48:38 -07001095 arg.putInt(CALL_METHOD_USER_KEY, userHandle);
Christopher Tate06efb532012-08-24 15:29:27 -07001096 IContentProvider cp = lazyGetProvider(cr);
Dianne Hackborn35654b62013-01-14 17:38:02 -08001097 cp.call(cr.getPackageName(), mCallSetCommand, name, arg);
Christopher Tate06efb532012-08-24 15:29:27 -07001098 } catch (RemoteException e) {
1099 Log.w(TAG, "Can't set key " + name + " in " + mUri, e);
1100 return false;
1101 }
1102 return true;
1103 }
1104
Christopher Tate06efb532012-08-24 15:29:27 -07001105 public String getStringForUser(ContentResolver cr, String name, final int userHandle) {
Christopher Tate78d2a662012-09-13 16:19:44 -07001106 final boolean isSelf = (userHandle == UserHandle.myUserId());
1107 if (isSelf) {
1108 long newValuesVersion = SystemProperties.getLong(mVersionSystemProperty, 0);
Dan Egnor799f7212009-11-24 16:24:44 -08001109
Christopher Tate78d2a662012-09-13 16:19:44 -07001110 // Our own user's settings data uses a client-side cache
1111 synchronized (this) {
1112 if (mValuesVersion != newValuesVersion) {
1113 if (LOCAL_LOGV || false) {
1114 Log.v(TAG, "invalidate [" + mUri.getLastPathSegment() + "]: current "
1115 + newValuesVersion + " != cached " + mValuesVersion);
1116 }
1117
1118 mValues.clear();
1119 mValuesVersion = newValuesVersion;
Dan Egnor799f7212009-11-24 16:24:44 -08001120 }
1121
Christopher Tate78d2a662012-09-13 16:19:44 -07001122 if (mValues.containsKey(name)) {
1123 return mValues.get(name); // Could be null, that's OK -- negative caching
1124 }
Dan Egnor799f7212009-11-24 16:24:44 -08001125 }
Christopher Tate78d2a662012-09-13 16:19:44 -07001126 } else {
1127 if (LOCAL_LOGV) Log.v(TAG, "get setting for user " + userHandle
1128 + " by user " + UserHandle.myUserId() + " so skipping cache");
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001129 }
Dan Egnor799f7212009-11-24 16:24:44 -08001130
Christopher Tate06efb532012-08-24 15:29:27 -07001131 IContentProvider cp = lazyGetProvider(cr);
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001132
1133 // Try the fast path first, not using query(). If this
1134 // fails (alternate Settings provider that doesn't support
1135 // this interface?) then we fall back to the query/table
1136 // interface.
Christopher Tate06efb532012-08-24 15:29:27 -07001137 if (mCallGetCommand != null) {
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001138 try {
Christopher Tate06efb532012-08-24 15:29:27 -07001139 Bundle args = null;
Christopher Tate5e08af02012-09-21 17:17:22 -07001140 if (!isSelf) {
Christopher Tate06efb532012-08-24 15:29:27 -07001141 args = new Bundle();
1142 args.putInt(CALL_METHOD_USER_KEY, userHandle);
1143 }
Dianne Hackborn35654b62013-01-14 17:38:02 -08001144 Bundle b = cp.call(cr.getPackageName(), mCallGetCommand, name, args);
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001145 if (b != null) {
1146 String value = b.getPairValue();
Christopher Tate78d2a662012-09-13 16:19:44 -07001147 // Don't update our cache for reads of other users' data
1148 if (isSelf) {
1149 synchronized (this) {
1150 mValues.put(name, value);
1151 }
1152 } else {
1153 if (LOCAL_LOGV) Log.i(TAG, "call-query of user " + userHandle
1154 + " by " + UserHandle.myUserId()
1155 + " so not updating cache");
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001156 }
1157 return value;
1158 }
1159 // If the response Bundle is null, we fall through
1160 // to the query interface below.
1161 } catch (RemoteException e) {
1162 // Not supported by the remote side? Fall through
1163 // to query().
1164 }
1165 }
1166
Dan Egnor799f7212009-11-24 16:24:44 -08001167 Cursor c = null;
1168 try {
Dianne Hackborn35654b62013-01-14 17:38:02 -08001169 c = cp.query(cr.getPackageName(), mUri, SELECT_VALUE, NAME_EQ_PLACEHOLDER,
Jeff Brown75ea64f2012-01-25 19:37:13 -08001170 new String[]{name}, null, null);
Dan Egnor799f7212009-11-24 16:24:44 -08001171 if (c == null) {
1172 Log.w(TAG, "Can't get key " + name + " from " + mUri);
1173 return null;
1174 }
1175
1176 String value = c.moveToNext() ? c.getString(0) : null;
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001177 synchronized (this) {
Dan Egnor799f7212009-11-24 16:24:44 -08001178 mValues.put(name, value);
1179 }
1180 if (LOCAL_LOGV) {
1181 Log.v(TAG, "cache miss [" + mUri.getLastPathSegment() + "]: " +
1182 name + " = " + (value == null ? "(null)" : value));
1183 }
1184 return value;
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08001185 } catch (RemoteException e) {
Dan Egnor799f7212009-11-24 16:24:44 -08001186 Log.w(TAG, "Can't get key " + name + " from " + mUri, e);
1187 return null; // Return null, but don't cache it.
1188 } finally {
1189 if (c != null) c.close();
1190 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001191 }
1192 }
1193
1194 /**
1195 * System settings, containing miscellaneous system preferences. This
1196 * table holds simple name/value pairs. There are convenience
1197 * functions for accessing individual settings entries.
1198 */
1199 public static final class System extends NameValueTable {
1200 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_system_version";
1201
Svetoslav683914b2015-01-15 14:22:26 -08001202 /** @hide */
1203 public static interface Validator {
1204 public boolean validate(String value);
1205 }
1206
Dianne Hackborn139748f2012-09-24 11:36:57 -07001207 /**
1208 * The content:// style URL for this table
1209 */
1210 public static final Uri CONTENT_URI =
1211 Uri.parse("content://" + AUTHORITY + "/system");
1212
1213 private static final NameValueCache sNameValueCache = new NameValueCache(
1214 SYS_PROP_SETTING_VERSION,
1215 CONTENT_URI,
1216 CALL_METHOD_GET_SYSTEM,
1217 CALL_METHOD_PUT_SYSTEM);
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07001218
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001219 private static final HashSet<String> MOVED_TO_SECURE;
1220 static {
1221 MOVED_TO_SECURE = new HashSet<String>(30);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001222 MOVED_TO_SECURE.add(Secure.ANDROID_ID);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001223 MOVED_TO_SECURE.add(Secure.HTTP_PROXY);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001224 MOVED_TO_SECURE.add(Secure.LOCATION_PROVIDERS_ALLOWED);
Danielle Millett925a7d82012-03-19 18:02:20 -04001225 MOVED_TO_SECURE.add(Secure.LOCK_BIOMETRIC_WEAK_FLAGS);
Amith Yamasani156c4352010-03-05 17:10:03 -08001226 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_ENABLED);
1227 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_VISIBLE);
1228 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001229 MOVED_TO_SECURE.add(Secure.LOGGING_ID);
1230 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_ENABLED);
1231 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_LAST_UPDATE);
1232 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_REDIRECT_URL);
1233 MOVED_TO_SECURE.add(Secure.SETTINGS_CLASSNAME);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001234 MOVED_TO_SECURE.add(Secure.USE_GOOGLE_MAIL);
1235 MOVED_TO_SECURE.add(Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
1236 MOVED_TO_SECURE.add(Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY);
1237 MOVED_TO_SECURE.add(Secure.WIFI_NUM_OPEN_NETWORKS_KEPT);
1238 MOVED_TO_SECURE.add(Secure.WIFI_ON);
1239 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE);
1240 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_AP_COUNT);
1241 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS);
1242 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED);
1243 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS);
1244 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT);
1245 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_MAX_AP_CHECKS);
1246 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_ON);
1247 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_COUNT);
1248 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_DELAY_MS);
1249 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS);
Christopher Tateaa036a22014-05-19 16:33:27 -07001250
1251 // At one time in System, then Global, but now back in Secure
1252 MOVED_TO_SECURE.add(Secure.INSTALL_NON_MARKET_APPS);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001253 }
1254
Christopher Tate06efb532012-08-24 15:29:27 -07001255 private static final HashSet<String> MOVED_TO_GLOBAL;
Christopher Tate66488d62012-10-02 11:58:01 -07001256 private static final HashSet<String> MOVED_TO_SECURE_THEN_GLOBAL;
Christopher Tate06efb532012-08-24 15:29:27 -07001257 static {
1258 MOVED_TO_GLOBAL = new HashSet<String>();
Christopher Tate66488d62012-10-02 11:58:01 -07001259 MOVED_TO_SECURE_THEN_GLOBAL = new HashSet<String>();
1260
Christopher Tate92198742012-09-07 12:00:13 -07001261 // these were originally in system but migrated to secure in the past,
1262 // so are duplicated in the Secure.* namespace
Christopher Tate66488d62012-10-02 11:58:01 -07001263 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.ADB_ENABLED);
1264 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.BLUETOOTH_ON);
1265 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DATA_ROAMING);
1266 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DEVICE_PROVISIONED);
Christopher Tate66488d62012-10-02 11:58:01 -07001267 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.USB_MASS_STORAGE_ENABLED);
1268 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.HTTP_PROXY);
Christopher Tate06efb532012-08-24 15:29:27 -07001269
Christopher Tate92198742012-09-07 12:00:13 -07001270 // these are moving directly from system to global
Christopher Tate06efb532012-08-24 15:29:27 -07001271 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_ON);
1272 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_RADIOS);
1273 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
1274 MOVED_TO_GLOBAL.add(Settings.Global.AUTO_TIME);
1275 MOVED_TO_GLOBAL.add(Settings.Global.AUTO_TIME_ZONE);
1276 MOVED_TO_GLOBAL.add(Settings.Global.CAR_DOCK_SOUND);
1277 MOVED_TO_GLOBAL.add(Settings.Global.CAR_UNDOCK_SOUND);
1278 MOVED_TO_GLOBAL.add(Settings.Global.DESK_DOCK_SOUND);
1279 MOVED_TO_GLOBAL.add(Settings.Global.DESK_UNDOCK_SOUND);
1280 MOVED_TO_GLOBAL.add(Settings.Global.DOCK_SOUNDS_ENABLED);
1281 MOVED_TO_GLOBAL.add(Settings.Global.LOCK_SOUND);
1282 MOVED_TO_GLOBAL.add(Settings.Global.UNLOCK_SOUND);
1283 MOVED_TO_GLOBAL.add(Settings.Global.LOW_BATTERY_SOUND);
1284 MOVED_TO_GLOBAL.add(Settings.Global.POWER_SOUNDS_ENABLED);
1285 MOVED_TO_GLOBAL.add(Settings.Global.STAY_ON_WHILE_PLUGGED_IN);
1286 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SLEEP_POLICY);
Eric Laurentbc0fab1f2012-09-19 11:24:41 -07001287 MOVED_TO_GLOBAL.add(Settings.Global.MODE_RINGER);
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07001288 MOVED_TO_GLOBAL.add(Settings.Global.WINDOW_ANIMATION_SCALE);
1289 MOVED_TO_GLOBAL.add(Settings.Global.TRANSITION_ANIMATION_SCALE);
1290 MOVED_TO_GLOBAL.add(Settings.Global.ANIMATOR_DURATION_SCALE);
1291 MOVED_TO_GLOBAL.add(Settings.Global.FANCY_IME_ANIMATIONS);
1292 MOVED_TO_GLOBAL.add(Settings.Global.COMPATIBILITY_MODE);
1293 MOVED_TO_GLOBAL.add(Settings.Global.EMERGENCY_TONE);
1294 MOVED_TO_GLOBAL.add(Settings.Global.CALL_AUTO_RETRY);
1295 MOVED_TO_GLOBAL.add(Settings.Global.DEBUG_APP);
1296 MOVED_TO_GLOBAL.add(Settings.Global.WAIT_FOR_DEBUGGER);
1297 MOVED_TO_GLOBAL.add(Settings.Global.SHOW_PROCESSES);
1298 MOVED_TO_GLOBAL.add(Settings.Global.ALWAYS_FINISH_ACTIVITIES);
Geremy Condraa0735112013-03-26 21:49:26 -07001299 MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_CONTENT_URL);
1300 MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_METADATA_URL);
1301 MOVED_TO_GLOBAL.add(Settings.Global.SELINUX_UPDATE_CONTENT_URL);
1302 MOVED_TO_GLOBAL.add(Settings.Global.SELINUX_UPDATE_METADATA_URL);
1303 MOVED_TO_GLOBAL.add(Settings.Global.SMS_SHORT_CODES_UPDATE_CONTENT_URL);
1304 MOVED_TO_GLOBAL.add(Settings.Global.SMS_SHORT_CODES_UPDATE_METADATA_URL);
1305 MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_CONTENT_URL);
1306 MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_METADATA_URL);
Christopher Tate06efb532012-08-24 15:29:27 -07001307 }
1308
Svetoslav683914b2015-01-15 14:22:26 -08001309 private static final Validator sBooleanValidator =
1310 new DiscreteValueValidator(new String[] {"0", "1"});
1311
1312 private static final Validator sNonNegativeIntegerValidator = new Validator() {
1313 @Override
1314 public boolean validate(String value) {
1315 try {
1316 return Integer.parseInt(value) >= 0;
1317 } catch (NumberFormatException e) {
1318 return false;
1319 }
1320 }
1321 };
1322
1323 private static final Validator sVolumeValidator =
1324 new InclusiveFloatRangeValidator(0, 1);
1325
1326 private static final Validator sUriValidator = new Validator() {
1327 @Override
1328 public boolean validate(String value) {
1329 try {
1330 Uri.decode(value);
1331 return true;
1332 } catch (IllegalArgumentException e) {
1333 return false;
1334 }
1335 }
1336 };
1337
1338 private static final Validator sLenientIpAddressValidator = new Validator() {
1339 private static final int MAX_IPV6_LENGTH = 45;
1340
1341 @Override
1342 public boolean validate(String value) {
1343 return value.length() <= MAX_IPV6_LENGTH;
1344 }
1345 };
1346
Christopher Tate66488d62012-10-02 11:58:01 -07001347 /** @hide */
Svetoslav683914b2015-01-15 14:22:26 -08001348 public static void getMovedToGlobalSettings(Set<String> outKeySet) {
Christopher Tate66488d62012-10-02 11:58:01 -07001349 outKeySet.addAll(MOVED_TO_GLOBAL);
1350 outKeySet.addAll(MOVED_TO_SECURE_THEN_GLOBAL);
1351 }
1352
1353 /** @hide */
Svetoslav683914b2015-01-15 14:22:26 -08001354 public static void getMovedToSecureSettings(Set<String> outKeySet) {
1355 outKeySet.addAll(MOVED_TO_SECURE);
1356 }
1357
1358 /** @hide */
Christopher Tate66488d62012-10-02 11:58:01 -07001359 public static void getNonLegacyMovedKeys(HashSet<String> outKeySet) {
1360 outKeySet.addAll(MOVED_TO_GLOBAL);
1361 }
1362
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001363 /**
1364 * Look up a name in the database.
1365 * @param resolver to access the database with
1366 * @param name to look up in the table
1367 * @return the corresponding value, or null if not present
1368 */
Dianne Hackborn139748f2012-09-24 11:36:57 -07001369 public static String getString(ContentResolver resolver, String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07001370 return getStringForUser(resolver, name, UserHandle.myUserId());
1371 }
1372
1373 /** @hide */
Dianne Hackborn139748f2012-09-24 11:36:57 -07001374 public static String getStringForUser(ContentResolver resolver, String name,
Christopher Tate06efb532012-08-24 15:29:27 -07001375 int userHandle) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001376 if (MOVED_TO_SECURE.contains(name)) {
1377 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1378 + " to android.provider.Settings.Secure, returning read-only value.");
Christopher Tate06efb532012-08-24 15:29:27 -07001379 return Secure.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001380 }
Christopher Tate66488d62012-10-02 11:58:01 -07001381 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) {
Christopher Tate06efb532012-08-24 15:29:27 -07001382 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1383 + " to android.provider.Settings.Global, returning read-only value.");
1384 return Global.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001385 }
Christopher Tate06efb532012-08-24 15:29:27 -07001386 return sNameValueCache.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001387 }
1388
1389 /**
1390 * Store a name/value pair into the database.
1391 * @param resolver to access the database with
1392 * @param name to store
1393 * @param value to associate with the name
1394 * @return true if the value was set, false on database errors
1395 */
1396 public static boolean putString(ContentResolver resolver, String name, String value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001397 return putStringForUser(resolver, name, value, UserHandle.myUserId());
1398 }
1399
1400 /** @hide */
1401 public static boolean putStringForUser(ContentResolver resolver, String name, String value,
1402 int userHandle) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001403 if (MOVED_TO_SECURE.contains(name)) {
1404 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1405 + " to android.provider.Settings.Secure, value is unchanged.");
1406 return false;
1407 }
Christopher Tate66488d62012-10-02 11:58:01 -07001408 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) {
Christopher Tate06efb532012-08-24 15:29:27 -07001409 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1410 + " to android.provider.Settings.Global, value is unchanged.");
1411 return false;
1412 }
Christopher Tate06efb532012-08-24 15:29:27 -07001413 return sNameValueCache.putStringForUser(resolver, name, value, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001414 }
1415
1416 /**
1417 * Construct the content URI for a particular name/value pair,
1418 * useful for monitoring changes with a ContentObserver.
1419 * @param name to look up in the table
1420 * @return the corresponding content URI, or null if not present
1421 */
1422 public static Uri getUriFor(String name) {
1423 if (MOVED_TO_SECURE.contains(name)) {
1424 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1425 + " to android.provider.Settings.Secure, returning Secure URI.");
1426 return Secure.getUriFor(Secure.CONTENT_URI, name);
1427 }
Christopher Tate66488d62012-10-02 11:58:01 -07001428 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) {
Christopher Tate06efb532012-08-24 15:29:27 -07001429 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
1430 + " to android.provider.Settings.Global, returning read-only global URI.");
1431 return Global.getUriFor(Global.CONTENT_URI, name);
1432 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001433 return getUriFor(CONTENT_URI, name);
1434 }
1435
1436 /**
1437 * Convenience function for retrieving a single system settings value
1438 * as an integer. Note that internally setting values are always
1439 * stored as strings; this function converts the string to an integer
1440 * for you. The default value will be returned if the setting is
1441 * not defined or not an integer.
1442 *
1443 * @param cr The ContentResolver to access.
1444 * @param name The name of the setting to retrieve.
1445 * @param def Value to return if the setting is not defined.
1446 *
1447 * @return The setting's current value, or 'def' if it is not defined
1448 * or not a valid integer.
1449 */
1450 public static int getInt(ContentResolver cr, String name, int def) {
Christopher Tate06efb532012-08-24 15:29:27 -07001451 return getIntForUser(cr, name, def, UserHandle.myUserId());
1452 }
1453
1454 /** @hide */
1455 public static int getIntForUser(ContentResolver cr, String name, int def, int userHandle) {
1456 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001457 try {
1458 return v != null ? Integer.parseInt(v) : def;
1459 } catch (NumberFormatException e) {
1460 return def;
1461 }
1462 }
1463
1464 /**
1465 * Convenience function for retrieving a single system settings value
1466 * as an integer. Note that internally setting values are always
1467 * stored as strings; this function converts the string to an integer
1468 * for you.
1469 * <p>
1470 * This version does not take a default value. If the setting has not
1471 * been set, or the string value is not a number,
1472 * it throws {@link SettingNotFoundException}.
1473 *
1474 * @param cr The ContentResolver to access.
1475 * @param name The name of the setting to retrieve.
1476 *
1477 * @throws SettingNotFoundException Thrown if a setting by the given
1478 * name can't be found or the setting value is not an integer.
1479 *
1480 * @return The setting's current value.
1481 */
1482 public static int getInt(ContentResolver cr, String name)
1483 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07001484 return getIntForUser(cr, name, UserHandle.myUserId());
1485 }
1486
1487 /** @hide */
1488 public static int getIntForUser(ContentResolver cr, String name, int userHandle)
1489 throws SettingNotFoundException {
1490 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001491 try {
1492 return Integer.parseInt(v);
1493 } catch (NumberFormatException e) {
1494 throw new SettingNotFoundException(name);
1495 }
1496 }
1497
1498 /**
1499 * Convenience function for updating a single settings value as an
1500 * integer. This will either create a new entry in the table if the
1501 * given name does not exist, or modify the value of the existing row
1502 * with that name. Note that internally setting values are always
1503 * stored as strings, so this function converts the given value to a
1504 * string before storing it.
1505 *
1506 * @param cr The ContentResolver to access.
1507 * @param name The name of the setting to modify.
1508 * @param value The new value for the setting.
1509 * @return true if the value was set, false on database errors
1510 */
1511 public static boolean putInt(ContentResolver cr, String name, int value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001512 return putIntForUser(cr, name, value, UserHandle.myUserId());
1513 }
1514
1515 /** @hide */
1516 public static boolean putIntForUser(ContentResolver cr, String name, int value,
1517 int userHandle) {
1518 return putStringForUser(cr, name, Integer.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001519 }
1520
1521 /**
1522 * Convenience function for retrieving a single system settings value
1523 * as a {@code long}. Note that internally setting values are always
1524 * stored as strings; this function converts the string to a {@code long}
1525 * for you. The default value will be returned if the setting is
1526 * not defined or not a {@code long}.
1527 *
1528 * @param cr The ContentResolver to access.
1529 * @param name The name of the setting to retrieve.
1530 * @param def Value to return if the setting is not defined.
1531 *
1532 * @return The setting's current value, or 'def' if it is not defined
1533 * or not a valid {@code long}.
1534 */
1535 public static long getLong(ContentResolver cr, String name, long def) {
Christopher Tate06efb532012-08-24 15:29:27 -07001536 return getLongForUser(cr, name, def, UserHandle.myUserId());
1537 }
1538
1539 /** @hide */
1540 public static long getLongForUser(ContentResolver cr, String name, long def,
1541 int userHandle) {
1542 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001543 long value;
1544 try {
1545 value = valString != null ? Long.parseLong(valString) : def;
1546 } catch (NumberFormatException e) {
1547 value = def;
1548 }
1549 return value;
1550 }
1551
1552 /**
1553 * Convenience function for retrieving a single system settings value
1554 * as a {@code long}. Note that internally setting values are always
1555 * stored as strings; this function converts the string to a {@code long}
1556 * for you.
1557 * <p>
1558 * This version does not take a default value. If the setting has not
1559 * been set, or the string value is not a number,
1560 * it throws {@link SettingNotFoundException}.
1561 *
1562 * @param cr The ContentResolver to access.
1563 * @param name The name of the setting to retrieve.
1564 *
1565 * @return The setting's current value.
1566 * @throws SettingNotFoundException Thrown if a setting by the given
1567 * name can't be found or the setting value is not an integer.
1568 */
1569 public static long getLong(ContentResolver cr, String name)
1570 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07001571 return getLongForUser(cr, name, UserHandle.myUserId());
1572 }
1573
1574 /** @hide */
1575 public static long getLongForUser(ContentResolver cr, String name, int userHandle)
1576 throws SettingNotFoundException {
1577 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001578 try {
1579 return Long.parseLong(valString);
1580 } catch (NumberFormatException e) {
1581 throw new SettingNotFoundException(name);
1582 }
1583 }
1584
1585 /**
1586 * Convenience function for updating a single settings value as a long
1587 * integer. This will either create a new entry in the table if the
1588 * given name does not exist, or modify the value of the existing row
1589 * with that name. Note that internally setting values are always
1590 * stored as strings, so this function converts the given value to a
1591 * string before storing it.
1592 *
1593 * @param cr The ContentResolver to access.
1594 * @param name The name of the setting to modify.
1595 * @param value The new value for the setting.
1596 * @return true if the value was set, false on database errors
1597 */
1598 public static boolean putLong(ContentResolver cr, String name, long value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001599 return putLongForUser(cr, name, value, UserHandle.myUserId());
1600 }
1601
1602 /** @hide */
1603 public static boolean putLongForUser(ContentResolver cr, String name, long value,
1604 int userHandle) {
1605 return putStringForUser(cr, name, Long.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001606 }
1607
1608 /**
1609 * Convenience function for retrieving a single system settings value
1610 * as a floating point number. Note that internally setting values are
1611 * always stored as strings; this function converts the string to an
1612 * float for you. The default value will be returned if the setting
1613 * is not defined or not a valid float.
1614 *
1615 * @param cr The ContentResolver to access.
1616 * @param name The name of the setting to retrieve.
1617 * @param def Value to return if the setting is not defined.
1618 *
1619 * @return The setting's current value, or 'def' if it is not defined
1620 * or not a valid float.
1621 */
1622 public static float getFloat(ContentResolver cr, String name, float def) {
Christopher Tate06efb532012-08-24 15:29:27 -07001623 return getFloatForUser(cr, name, def, UserHandle.myUserId());
1624 }
1625
1626 /** @hide */
1627 public static float getFloatForUser(ContentResolver cr, String name, float def,
1628 int userHandle) {
1629 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001630 try {
1631 return v != null ? Float.parseFloat(v) : def;
1632 } catch (NumberFormatException e) {
1633 return def;
1634 }
1635 }
1636
1637 /**
1638 * Convenience function for retrieving a single system settings value
1639 * as a float. Note that internally setting values are always
1640 * stored as strings; this function converts the string to a float
1641 * for you.
1642 * <p>
1643 * This version does not take a default value. If the setting has not
1644 * been set, or the string value is not a number,
1645 * it throws {@link SettingNotFoundException}.
1646 *
1647 * @param cr The ContentResolver to access.
1648 * @param name The name of the setting to retrieve.
1649 *
1650 * @throws SettingNotFoundException Thrown if a setting by the given
1651 * name can't be found or the setting value is not a float.
1652 *
1653 * @return The setting's current value.
1654 */
1655 public static float getFloat(ContentResolver cr, String name)
1656 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07001657 return getFloatForUser(cr, name, UserHandle.myUserId());
1658 }
1659
1660 /** @hide */
1661 public static float getFloatForUser(ContentResolver cr, String name, int userHandle)
1662 throws SettingNotFoundException {
1663 String v = getStringForUser(cr, name, userHandle);
Brian Muramatsue1d46982010-12-06 17:34:20 -08001664 if (v == null) {
1665 throw new SettingNotFoundException(name);
1666 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001667 try {
1668 return Float.parseFloat(v);
1669 } catch (NumberFormatException e) {
1670 throw new SettingNotFoundException(name);
1671 }
1672 }
1673
1674 /**
1675 * Convenience function for updating a single settings value as a
1676 * floating point number. This will either create a new entry in the
1677 * table if the given name does not exist, or modify the value of the
1678 * existing row with that name. Note that internally setting values
1679 * are always stored as strings, so this function converts the given
1680 * value to a string before storing it.
1681 *
1682 * @param cr The ContentResolver to access.
1683 * @param name The name of the setting to modify.
1684 * @param value The new value for the setting.
1685 * @return true if the value was set, false on database errors
1686 */
1687 public static boolean putFloat(ContentResolver cr, String name, float value) {
Christopher Tate06efb532012-08-24 15:29:27 -07001688 return putFloatForUser(cr, name, value, UserHandle.myUserId());
1689 }
1690
1691 /** @hide */
1692 public static boolean putFloatForUser(ContentResolver cr, String name, float value,
1693 int userHandle) {
1694 return putStringForUser(cr, name, Float.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001695 }
1696
1697 /**
1698 * Convenience function to read all of the current
1699 * configuration-related settings into a
1700 * {@link Configuration} object.
1701 *
1702 * @param cr The ContentResolver to access.
1703 * @param outConfig Where to place the configuration settings.
1704 */
1705 public static void getConfiguration(ContentResolver cr, Configuration outConfig) {
Christopher Tate06efb532012-08-24 15:29:27 -07001706 getConfigurationForUser(cr, outConfig, UserHandle.myUserId());
1707 }
1708
1709 /** @hide */
1710 public static void getConfigurationForUser(ContentResolver cr, Configuration outConfig,
1711 int userHandle) {
1712 outConfig.fontScale = Settings.System.getFloatForUser(
1713 cr, FONT_SCALE, outConfig.fontScale, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001714 if (outConfig.fontScale < 0) {
1715 outConfig.fontScale = 1;
1716 }
1717 }
1718
1719 /**
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001720 * @hide Erase the fields in the Configuration that should be applied
1721 * by the settings.
1722 */
1723 public static void clearConfiguration(Configuration inoutConfig) {
1724 inoutConfig.fontScale = 0;
1725 }
Narayan Kamath6d632962011-08-24 11:51:37 +01001726
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001727 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001728 * Convenience function to write a batch of configuration-related
1729 * settings from a {@link Configuration} object.
1730 *
1731 * @param cr The ContentResolver to access.
1732 * @param config The settings to write.
1733 * @return true if the values were set, false on database errors
1734 */
1735 public static boolean putConfiguration(ContentResolver cr, Configuration config) {
Christopher Tate06efb532012-08-24 15:29:27 -07001736 return putConfigurationForUser(cr, config, UserHandle.myUserId());
1737 }
1738
1739 /** @hide */
1740 public static boolean putConfigurationForUser(ContentResolver cr, Configuration config,
1741 int userHandle) {
1742 return Settings.System.putFloatForUser(cr, FONT_SCALE, config.fontScale, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001743 }
1744
Dianne Hackbornb8b11a02010-03-10 15:53:11 -08001745 /** @hide */
1746 public static boolean hasInterestingConfigurationChanges(int changes) {
1747 return (changes&ActivityInfo.CONFIG_FONT_SCALE) != 0;
1748 }
Jaikumar Ganesh545e6702010-06-04 10:23:03 -07001749
Christopher Tate06efb532012-08-24 15:29:27 -07001750 /** @deprecated - Do not use */
1751 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001752 public static boolean getShowGTalkServiceStatus(ContentResolver cr) {
Christopher Tate06efb532012-08-24 15:29:27 -07001753 return getShowGTalkServiceStatusForUser(cr, UserHandle.myUserId());
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001754 }
1755
Christopher Tate06efb532012-08-24 15:29:27 -07001756 /**
1757 * @hide
1758 * @deprecated - Do not use
1759 */
1760 public static boolean getShowGTalkServiceStatusForUser(ContentResolver cr,
1761 int userHandle) {
1762 return getIntForUser(cr, SHOW_GTALK_SERVICE_STATUS, 0, userHandle) != 0;
1763 }
1764
1765 /** @deprecated - Do not use */
1766 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001767 public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) {
Christopher Tatec8c08382012-09-19 17:18:18 -07001768 setShowGTalkServiceStatusForUser(cr, flag, UserHandle.myUserId());
Christopher Tate06efb532012-08-24 15:29:27 -07001769 }
1770
1771 /**
1772 * @hide
1773 * @deprecated - Do not use
1774 */
1775 @Deprecated
1776 public static void setShowGTalkServiceStatusForUser(ContentResolver cr, boolean flag,
1777 int userHandle) {
1778 putIntForUser(cr, SHOW_GTALK_SERVICE_STATUS, flag ? 1 : 0, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001779 }
1780
Svetoslav683914b2015-01-15 14:22:26 -08001781 private static final class DiscreteValueValidator implements Validator {
1782 private final String[] mValues;
1783
1784 public DiscreteValueValidator(String[] values) {
1785 mValues = values;
1786 }
1787
1788 public boolean validate(String value) {
1789 return ArrayUtils.contains(mValues, value);
1790 }
1791 }
1792
1793 private static final class InclusiveIntegerRangeValidator implements Validator {
1794 private final int mMin;
1795 private final int mMax;
1796
1797 public InclusiveIntegerRangeValidator(int min, int max) {
1798 mMin = min;
1799 mMax = max;
1800 }
1801
1802 public boolean validate(String value) {
1803 try {
1804 final int intValue = Integer.parseInt(value);
1805 return intValue >= mMin && intValue <= mMax;
1806 } catch (NumberFormatException e) {
1807 return false;
1808 }
1809 }
1810 }
1811
1812 private static final class InclusiveFloatRangeValidator implements Validator {
1813 private final float mMin;
1814 private final float mMax;
1815
1816 public InclusiveFloatRangeValidator(float min, float max) {
1817 mMin = min;
1818 mMax = max;
1819 }
1820
1821 public boolean validate(String value) {
1822 try {
1823 final float floatValue = Float.parseFloat(value);
1824 return floatValue >= mMin && floatValue <= mMax;
1825 } catch (NumberFormatException e) {
1826 return false;
1827 }
1828 }
1829 }
1830
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001831 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001832 * @deprecated Use {@link android.provider.Settings.Global#STAY_ON_WHILE_PLUGGED_IN} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001833 */
Christopher Tate06efb532012-08-24 15:29:27 -07001834 @Deprecated
1835 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 -08001836
1837 /**
1838 * What happens when the user presses the end call button if they're not
1839 * on a call.<br/>
1840 * <b>Values:</b><br/>
1841 * 0 - The end button does nothing.<br/>
1842 * 1 - The end button goes to the home screen.<br/>
1843 * 2 - The end button puts the device to sleep and locks the keyguard.<br/>
1844 * 3 - The end button goes to the home screen. If the user is already on the
1845 * home screen, it puts the device to sleep.
1846 */
1847 public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";
1848
Svetoslav683914b2015-01-15 14:22:26 -08001849 private static final Validator END_BUTTON_BEHAVIOR_VALIDATOR =
1850 new InclusiveIntegerRangeValidator(0, 3);
1851
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001852 /**
David Brown458e8062010-03-08 21:52:11 -08001853 * END_BUTTON_BEHAVIOR value for "go home".
1854 * @hide
1855 */
1856 public static final int END_BUTTON_BEHAVIOR_HOME = 0x1;
1857
1858 /**
1859 * END_BUTTON_BEHAVIOR value for "go to sleep".
1860 * @hide
1861 */
1862 public static final int END_BUTTON_BEHAVIOR_SLEEP = 0x2;
1863
1864 /**
1865 * END_BUTTON_BEHAVIOR default value.
1866 * @hide
1867 */
1868 public static final int END_BUTTON_BEHAVIOR_DEFAULT = END_BUTTON_BEHAVIOR_SLEEP;
1869
1870 /**
Joe Onorato9cdffa12011-04-06 18:27:27 -07001871 * Is advanced settings mode turned on. 0 == no, 1 == yes
1872 * @hide
1873 */
1874 public static final String ADVANCED_SETTINGS = "advanced_settings";
1875
Svetoslav683914b2015-01-15 14:22:26 -08001876 private static final Validator ADVANCED_SETTINGS_VALIDATOR = sBooleanValidator;
1877
Joe Onorato9cdffa12011-04-06 18:27:27 -07001878 /**
1879 * ADVANCED_SETTINGS default value.
1880 * @hide
1881 */
1882 public static final int ADVANCED_SETTINGS_DEFAULT = 0;
1883
1884 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001885 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001886 */
Christopher Tate06efb532012-08-24 15:29:27 -07001887 @Deprecated
1888 public static final String AIRPLANE_MODE_ON = Global.AIRPLANE_MODE_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001889
1890 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001891 * @deprecated Use {@link android.provider.Settings.Global#RADIO_BLUETOOTH} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001892 */
Christopher Tate06efb532012-08-24 15:29:27 -07001893 @Deprecated
1894 public static final String RADIO_BLUETOOTH = Global.RADIO_BLUETOOTH;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001895
1896 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001897 * @deprecated Use {@link android.provider.Settings.Global#RADIO_WIFI} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001898 */
Christopher Tate06efb532012-08-24 15:29:27 -07001899 @Deprecated
1900 public static final String RADIO_WIFI = Global.RADIO_WIFI;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001901
Robert Greenwalt8588e472011-11-08 10:12:25 -08001902 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001903 * @deprecated Use {@link android.provider.Settings.Global#RADIO_WIMAX} instead
Robert Greenwalt8588e472011-11-08 10:12:25 -08001904 * {@hide}
1905 */
Christopher Tate06efb532012-08-24 15:29:27 -07001906 @Deprecated
1907 public static final String RADIO_WIMAX = Global.RADIO_WIMAX;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001908
1909 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001910 * @deprecated Use {@link android.provider.Settings.Global#RADIO_CELL} instead
Nick Pelly8d32a012011-08-09 07:03:49 -07001911 */
Christopher Tate06efb532012-08-24 15:29:27 -07001912 @Deprecated
1913 public static final String RADIO_CELL = Global.RADIO_CELL;
Nick Pelly8d32a012011-08-09 07:03:49 -07001914
1915 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001916 * @deprecated Use {@link android.provider.Settings.Global#RADIO_NFC} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001917 */
Christopher Tate06efb532012-08-24 15:29:27 -07001918 @Deprecated
1919 public static final String RADIO_NFC = Global.RADIO_NFC;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001920
1921 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001922 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_RADIOS} instead
1923 */
1924 @Deprecated
1925 public static final String AIRPLANE_MODE_RADIOS = Global.AIRPLANE_MODE_RADIOS;
1926
1927 /**
1928 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_TOGGLEABLE_RADIOS} instead
Mike Lockwoodbd5ddf02009-07-29 21:37:14 -07001929 *
1930 * {@hide}
1931 */
Christopher Tate06efb532012-08-24 15:29:27 -07001932 @Deprecated
1933 public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS =
1934 Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS;
Mike Lockwoodbd5ddf02009-07-29 21:37:14 -07001935
1936 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001937 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001938 */
Christopher Tate06efb532012-08-24 15:29:27 -07001939 @Deprecated
1940 public static final String WIFI_SLEEP_POLICY = Global.WIFI_SLEEP_POLICY;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001941
1942 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001943 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_DEFAULT} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001944 */
Christopher Tate06efb532012-08-24 15:29:27 -07001945 @Deprecated
1946 public static final int WIFI_SLEEP_POLICY_DEFAULT = Global.WIFI_SLEEP_POLICY_DEFAULT;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001947
1948 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001949 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001950 */
Christopher Tate06efb532012-08-24 15:29:27 -07001951 @Deprecated
1952 public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED =
1953 Global.WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07001954
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001955 /**
Christopher Tate06efb532012-08-24 15:29:27 -07001956 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_NEVER} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001957 */
Christopher Tate06efb532012-08-24 15:29:27 -07001958 @Deprecated
1959 public static final int WIFI_SLEEP_POLICY_NEVER = Global.WIFI_SLEEP_POLICY_NEVER;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07001960
Eric Laurentbc0fab1f2012-09-19 11:24:41 -07001961 /**
1962 * @deprecated Use {@link android.provider.Settings.Global#MODE_RINGER} instead
1963 */
1964 @Deprecated
1965 public static final String MODE_RINGER = Global.MODE_RINGER;
1966
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001967 /**
1968 * Whether to use static IP and other static network attributes.
1969 * <p>
1970 * Set to 1 for true and 0 for false.
Jeff Sharkey625239a2012-09-26 22:03:49 -07001971 *
1972 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001973 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07001974 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001975 public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
1976
Svetoslav683914b2015-01-15 14:22:26 -08001977 private static final Validator WIFI_USE_STATIC_IP_VALIDATOR = sBooleanValidator;
1978
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001979 /**
1980 * The static IP address.
1981 * <p>
1982 * Example: "192.168.1.51"
Jeff Sharkey625239a2012-09-26 22:03:49 -07001983 *
1984 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001985 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07001986 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001987 public static final String WIFI_STATIC_IP = "wifi_static_ip";
1988
Svetoslav683914b2015-01-15 14:22:26 -08001989 private static final Validator WIFI_STATIC_IP_VALIDATOR = sLenientIpAddressValidator;
1990
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001991 /**
1992 * If using static IP, the gateway's IP address.
1993 * <p>
1994 * Example: "192.168.1.1"
Jeff Sharkey625239a2012-09-26 22:03:49 -07001995 *
1996 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001997 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07001998 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001999 public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
2000
Svetoslav683914b2015-01-15 14:22:26 -08002001 private static final Validator WIFI_STATIC_GATEWAY_VALIDATOR = sLenientIpAddressValidator;
2002
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002003 /**
2004 * If using static IP, the net mask.
2005 * <p>
2006 * Example: "255.255.255.0"
Jeff Sharkey625239a2012-09-26 22:03:49 -07002007 *
2008 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002009 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07002010 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002011 public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask";
2012
Svetoslav683914b2015-01-15 14:22:26 -08002013 private static final Validator WIFI_STATIC_NETMASK_VALIDATOR = sLenientIpAddressValidator;
2014
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002015 /**
2016 * If using static IP, the primary DNS's IP address.
2017 * <p>
2018 * Example: "192.168.1.1"
Jeff Sharkey625239a2012-09-26 22:03:49 -07002019 *
2020 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002021 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07002022 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002023 public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1";
2024
Svetoslav683914b2015-01-15 14:22:26 -08002025 private static final Validator WIFI_STATIC_DNS1_VALIDATOR = sLenientIpAddressValidator;
2026
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002027 /**
2028 * If using static IP, the secondary DNS's IP address.
2029 * <p>
2030 * Example: "192.168.1.2"
Jeff Sharkey625239a2012-09-26 22:03:49 -07002031 *
2032 * @deprecated Use {@link WifiManager} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002033 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07002034 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002035 public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2";
2036
Svetoslav683914b2015-01-15 14:22:26 -08002037 private static final Validator WIFI_STATIC_DNS2_VALIDATOR = sLenientIpAddressValidator;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002038
2039 /**
2040 * Determines whether remote devices may discover and/or connect to
2041 * this device.
2042 * <P>Type: INT</P>
2043 * 2 -- discoverable and connectable
2044 * 1 -- connectable but not discoverable
2045 * 0 -- neither connectable nor discoverable
2046 */
2047 public static final String BLUETOOTH_DISCOVERABILITY =
2048 "bluetooth_discoverability";
2049
Svetoslav683914b2015-01-15 14:22:26 -08002050 private static final Validator BLUETOOTH_DISCOVERABILITY_VALIDATOR =
2051 new InclusiveIntegerRangeValidator(0, 2);
2052
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002053 /**
2054 * Bluetooth discoverability timeout. If this value is nonzero, then
2055 * Bluetooth becomes discoverable for a certain number of seconds,
2056 * after which is becomes simply connectable. The value is in seconds.
2057 */
2058 public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT =
2059 "bluetooth_discoverability_timeout";
2060
Svetoslav683914b2015-01-15 14:22:26 -08002061 private static final Validator BLUETOOTH_DISCOVERABILITY_TIMEOUT_VALIDATOR =
2062 sNonNegativeIntegerValidator;
2063
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002064 /**
Amith Yamasani156c4352010-03-05 17:10:03 -08002065 * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_ENABLED}
2066 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002067 */
Amith Yamasani156c4352010-03-05 17:10:03 -08002068 @Deprecated
2069 public static final String LOCK_PATTERN_ENABLED = Secure.LOCK_PATTERN_ENABLED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002070
2071 /**
Amith Yamasani156c4352010-03-05 17:10:03 -08002072 * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_VISIBLE}
2073 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002074 */
Amith Yamasani156c4352010-03-05 17:10:03 -08002075 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002076 public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
2077
2078 /**
Jaikumar Ganesh545e6702010-06-04 10:23:03 -07002079 * @deprecated Use
Amith Yamasani156c4352010-03-05 17:10:03 -08002080 * {@link android.provider.Settings.Secure#LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED}
2081 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002082 */
Amith Yamasani156c4352010-03-05 17:10:03 -08002083 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002084 public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED =
2085 "lock_pattern_tactile_feedback_enabled";
2086
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002087 /**
2088 * A formatted string of the next alarm that is set, or the empty string
2089 * if there is no alarm set.
Adrian Roosc42a1e12014-07-07 23:35:53 +02002090 *
2091 * @deprecated Use {@link android.app.AlarmManager#getNextAlarmClock()}.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002092 */
Adrian Roosc42a1e12014-07-07 23:35:53 +02002093 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002094 public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted";
2095
Svetoslav683914b2015-01-15 14:22:26 -08002096 private static final Validator NEXT_ALARM_FORMATTED_VALIDATOR = new Validator() {
2097 private static final int MAX_LENGTH = 1000;
2098 @Override
2099 public boolean validate(String value) {
2100 // TODO: No idea what the correct format is.
2101 return value == null || value.length() > MAX_LENGTH;
2102 }
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.
2257 */
2258 public static final String VOLUME_RING = "volume_ring";
2259
Svetoslav683914b2015-01-15 14:22:26 -08002260 private static final Validator VOLUME_RING_VALIDATOR = sVolumeValidator;
2261
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002262 /**
2263 * System/notifications volume. This is used internally, changing this
2264 * value will not change the volume. See AudioManager.
2265 */
2266 public static final String VOLUME_SYSTEM = "volume_system";
2267
Svetoslav683914b2015-01-15 14:22:26 -08002268 private static final Validator VOLUME_SYSTEM_VALIDATOR = sVolumeValidator;
2269
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002270 /**
2271 * Voice call volume. This is used internally, changing this value will
2272 * not change the volume. See AudioManager.
2273 */
2274 public static final String VOLUME_VOICE = "volume_voice";
2275
Svetoslav683914b2015-01-15 14:22:26 -08002276 private static final Validator VOLUME_VOICE_VALIDATOR = sVolumeValidator;
2277
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002278 /**
2279 * Music/media/gaming volume. This is used internally, changing this
2280 * value will not change the volume. See AudioManager.
2281 */
2282 public static final String VOLUME_MUSIC = "volume_music";
2283
Svetoslav683914b2015-01-15 14:22:26 -08002284 private static final Validator VOLUME_MUSIC_VALIDATOR = sVolumeValidator;
2285
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002286 /**
2287 * Alarm volume. This is used internally, changing this
2288 * value will not change the volume. See AudioManager.
2289 */
2290 public static final String VOLUME_ALARM = "volume_alarm";
2291
Svetoslav683914b2015-01-15 14:22:26 -08002292 private static final Validator VOLUME_ALARM_VALIDATOR = sVolumeValidator;
2293
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002294 /**
2295 * Notification volume. This is used internally, changing this
2296 * value will not change the volume. See AudioManager.
2297 */
2298 public static final String VOLUME_NOTIFICATION = "volume_notification";
2299
Svetoslav683914b2015-01-15 14:22:26 -08002300 private static final Validator VOLUME_NOTIFICATION_VALIDATOR = sVolumeValidator;
2301
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002302 /**
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.
2305 */
2306 public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";
2307
Svetoslav683914b2015-01-15 14:22:26 -08002308 private static final Validator VOLUME_BLUETOOTH_SCO_VALIDATOR = sVolumeValidator;
2309
Eric Laurent484d2882009-12-08 09:05:45 -08002310 /**
Mike Lockwood8517e462011-10-25 14:47:19 -04002311 * Master volume (float in the range 0.0f to 1.0f).
2312 * @hide
2313 */
2314 public static final String VOLUME_MASTER = "volume_master";
2315
Svetoslav683914b2015-01-15 14:22:26 -08002316 private static final Validator VOLUME_MASTER_VALIDATOR = sVolumeValidator;
2317
Mike Lockwood8517e462011-10-25 14:47:19 -04002318 /**
Justin Koh57978ed2012-04-03 17:37:58 -07002319 * Master volume mute (int 1 = mute, 0 = not muted).
2320 *
2321 * @hide
2322 */
2323 public static final String VOLUME_MASTER_MUTE = "volume_master_mute";
2324
Svetoslav683914b2015-01-15 14:22:26 -08002325 private static final Validator VOLUME_MASTER_MUTE_VALIDATOR = sBooleanValidator;
2326
Justin Koh57978ed2012-04-03 17:37:58 -07002327 /**
Julia Reynoldsb53453f2014-08-22 11:42:43 -04002328 * Microphone mute (int 1 = mute, 0 = not muted).
2329 *
2330 * @hide
2331 */
2332 public static final String MICROPHONE_MUTE = "microphone_mute";
2333
Svetoslav683914b2015-01-15 14:22:26 -08002334 private static final Validator MICROPHONE_MUTE_VALIDATOR = sBooleanValidator;
2335
Julia Reynoldsb53453f2014-08-22 11:42:43 -04002336 /**
Justin Koh57978ed2012-04-03 17:37:58 -07002337 * Whether the notifications should use the ring volume (value of 1) or
2338 * a separate notification volume (value of 0). In most cases, users
2339 * will have this enabled so the notification and ringer volumes will be
2340 * the same. However, power users can disable this and use the separate
2341 * notification volume control.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002342 * <p>
Justin Koh57978ed2012-04-03 17:37:58 -07002343 * Note: This is a one-off setting that will be removed in the future
2344 * when there is profile support. For this reason, it is kept hidden
2345 * from the public APIs.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002346 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002347 * @hide
Amith Yamasani42722bf2011-07-22 10:34:27 -07002348 * @deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002349 */
Gilles Debunnee90bed12011-08-30 14:28:27 -07002350 @Deprecated
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002351 public static final String NOTIFICATIONS_USE_RING_VOLUME =
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002352 "notifications_use_ring_volume";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002353
Svetoslav683914b2015-01-15 14:22:26 -08002354 private static final Validator NOTIFICATIONS_USE_RING_VOLUME_VALIDATOR = sBooleanValidator;
2355
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002356 /**
Daniel Sandler6329bf72010-02-26 15:17:44 -05002357 * Whether silent mode should allow vibration feedback. This is used
2358 * internally in AudioService and the Sound settings activity to
2359 * coordinate decoupling of vibrate and silent modes. This setting
2360 * will likely be removed in a future release with support for
2361 * audio/vibe feedback profiles.
2362 *
Eric Laurentbffc3d12012-05-07 17:43:49 -07002363 * Not used anymore. On devices with vibrator, the user explicitly selects
2364 * silent or vibrate mode.
2365 * Kept for use by legacy database upgrade code in DatabaseHelper.
Daniel Sandler6329bf72010-02-26 15:17:44 -05002366 * @hide
2367 */
2368 public static final String VIBRATE_IN_SILENT = "vibrate_in_silent";
2369
Svetoslav683914b2015-01-15 14:22:26 -08002370 private static final Validator VIBRATE_IN_SILENT_VALIDATOR = sBooleanValidator;
2371
Daniel Sandler6329bf72010-02-26 15:17:44 -05002372 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002373 * The mapping of stream type (integer) to its setting.
2374 */
2375 public static final String[] VOLUME_SETTINGS = {
2376 VOLUME_VOICE, VOLUME_SYSTEM, VOLUME_RING, VOLUME_MUSIC,
Eric Laurent484d2882009-12-08 09:05:45 -08002377 VOLUME_ALARM, VOLUME_NOTIFICATION, VOLUME_BLUETOOTH_SCO
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002378 };
2379
2380 /**
2381 * Appended to various volume related settings to record the previous
2382 * values before they the settings were affected by a silent/vibrate
2383 * ringer mode change.
2384 */
2385 public static final String APPEND_FOR_LAST_AUDIBLE = "_last_audible";
2386
2387 /**
2388 * Persistent store for the system-wide default ringtone URI.
2389 * <p>
2390 * If you need to play the default ringtone at any given time, it is recommended
2391 * you give {@link #DEFAULT_RINGTONE_URI} to the media player. It will resolve
2392 * to the set default ringtone at the time of playing.
2393 *
2394 * @see #DEFAULT_RINGTONE_URI
2395 */
2396 public static final String RINGTONE = "ringtone";
2397
Svetoslav683914b2015-01-15 14:22:26 -08002398 private static final Validator RINGTONE_VALIDATOR = sUriValidator;
2399
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002400 /**
2401 * A {@link Uri} that will point to the current default ringtone at any
2402 * given time.
2403 * <p>
2404 * If the current default ringtone is in the DRM provider and the caller
2405 * does not have permission, the exception will be a
2406 * FileNotFoundException.
2407 */
2408 public static final Uri DEFAULT_RINGTONE_URI = getUriFor(RINGTONE);
2409
2410 /**
2411 * Persistent store for the system-wide default notification sound.
2412 *
2413 * @see #RINGTONE
2414 * @see #DEFAULT_NOTIFICATION_URI
2415 */
2416 public static final String NOTIFICATION_SOUND = "notification_sound";
2417
Svetoslav683914b2015-01-15 14:22:26 -08002418 private static final Validator NOTIFICATION_SOUND_VALIDATOR = sUriValidator;
2419
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002420 /**
2421 * A {@link Uri} that will point to the current default notification
2422 * sound at any given time.
2423 *
2424 * @see #DEFAULT_RINGTONE_URI
2425 */
2426 public static final Uri DEFAULT_NOTIFICATION_URI = getUriFor(NOTIFICATION_SOUND);
2427
2428 /**
Patrick Scott3156bb002009-04-13 09:57:38 -07002429 * Persistent store for the system-wide default alarm alert.
2430 *
2431 * @see #RINGTONE
2432 * @see #DEFAULT_ALARM_ALERT_URI
2433 */
2434 public static final String ALARM_ALERT = "alarm_alert";
2435
Svetoslav683914b2015-01-15 14:22:26 -08002436 private static final Validator ALARM_ALERT_VALIDATOR = sUriValidator;
2437
Patrick Scott3156bb002009-04-13 09:57:38 -07002438 /**
2439 * A {@link Uri} that will point to the current default alarm alert at
2440 * any given time.
2441 *
2442 * @see #DEFAULT_ALARM_ALERT_URI
2443 */
2444 public static final Uri DEFAULT_ALARM_ALERT_URI = getUriFor(ALARM_ALERT);
2445
2446 /**
Jean-Michel Trivid589fea2011-04-15 11:28:10 -07002447 * Persistent store for the system default media button event receiver.
2448 *
2449 * @hide
2450 */
2451 public static final String MEDIA_BUTTON_RECEIVER = "media_button_receiver";
2452
Svetoslav683914b2015-01-15 14:22:26 -08002453 private static final Validator MEDIA_BUTTON_RECEIVER_VALIDATOR = new Validator() {
2454 @Override
2455 public boolean validate(String value) {
2456 try {
2457 ComponentName.unflattenFromString(value);
2458 return true;
2459 } catch (NullPointerException e) {
2460 return false;
2461 }
2462 }
2463 };
2464
Jean-Michel Trivid589fea2011-04-15 11:28:10 -07002465 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002466 * Setting to enable Auto Replace (AutoText) in text editors. 1 = On, 0 = Off
2467 */
2468 public static final String TEXT_AUTO_REPLACE = "auto_replace";
2469
Svetoslav683914b2015-01-15 14:22:26 -08002470 private static final Validator TEXT_AUTO_REPLACE_VALIDATOR = sBooleanValidator;
2471
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002472 /**
2473 * Setting to enable Auto Caps in text editors. 1 = On, 0 = Off
2474 */
2475 public static final String TEXT_AUTO_CAPS = "auto_caps";
2476
Svetoslav683914b2015-01-15 14:22:26 -08002477 private static final Validator TEXT_AUTO_CAPS_VALIDATOR = sBooleanValidator;
2478
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002479 /**
2480 * Setting to enable Auto Punctuate in text editors. 1 = On, 0 = Off. This
2481 * feature converts two spaces to a "." and space.
2482 */
2483 public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002484
Svetoslav683914b2015-01-15 14:22:26 -08002485 private static final Validator TEXT_AUTO_PUNCTUATE_VALIDATOR = sBooleanValidator;
2486
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002487 /**
2488 * Setting to showing password characters in text editors. 1 = On, 0 = Off
2489 */
2490 public static final String TEXT_SHOW_PASSWORD = "show_password";
2491
Svetoslav683914b2015-01-15 14:22:26 -08002492 private static final Validator TEXT_SHOW_PASSWORD_VALIDATOR = sBooleanValidator;
2493
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002494 public static final String SHOW_GTALK_SERVICE_STATUS =
2495 "SHOW_GTALK_SERVICE_STATUS";
2496
Svetoslav683914b2015-01-15 14:22:26 -08002497 private static final Validator SHOW_GTALK_SERVICE_STATUS_VALIDATOR = sBooleanValidator;
2498
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002499 /**
2500 * Name of activity to use for wallpaper on the home screen.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002501 *
2502 * @deprecated Use {@link WallpaperManager} instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002503 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002504 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002505 public static final String WALLPAPER_ACTIVITY = "wallpaper_activity";
2506
Svetoslav683914b2015-01-15 14:22:26 -08002507 private static final Validator WALLPAPER_ACTIVITY_VALIDATOR = new Validator() {
2508 private static final int MAX_LENGTH = 1000;
2509
2510 @Override
2511 public boolean validate(String value) {
2512 if (value != null && value.length() > MAX_LENGTH) {
2513 return false;
2514 }
2515 return ComponentName.unflattenFromString(value) != null;
2516 }
2517 };
2518
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002519 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002520 * @deprecated Use {@link android.provider.Settings.Global#AUTO_TIME}
2521 * instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002522 */
Christopher Tate06efb532012-08-24 15:29:27 -07002523 @Deprecated
2524 public static final String AUTO_TIME = Global.AUTO_TIME;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002525
2526 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002527 * @deprecated Use {@link android.provider.Settings.Global#AUTO_TIME_ZONE}
2528 * instead
Amith Yamasaniad450be2010-09-16 16:47:00 -07002529 */
Christopher Tate06efb532012-08-24 15:29:27 -07002530 @Deprecated
2531 public static final String AUTO_TIME_ZONE = Global.AUTO_TIME_ZONE;
Amith Yamasaniad450be2010-09-16 16:47:00 -07002532
2533 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002534 * Display times as 12 or 24 hours
2535 * 12
2536 * 24
2537 */
2538 public static final String TIME_12_24 = "time_12_24";
2539
Svetoslav683914b2015-01-15 14:22:26 -08002540 /** @hide */
2541 public static final Validator TIME_12_24_VALIDATOR =
2542 new DiscreteValueValidator(new String[] {"12", "24"});
2543
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002544 /**
2545 * Date format string
2546 * mm/dd/yyyy
2547 * dd/mm/yyyy
2548 * yyyy/mm/dd
2549 */
2550 public static final String DATE_FORMAT = "date_format";
2551
Svetoslav683914b2015-01-15 14:22:26 -08002552 /** @hide */
2553 public static final Validator DATE_FORMAT_VALIDATOR = new Validator() {
2554 @Override
2555 public boolean validate(String value) {
2556 try {
2557 new SimpleDateFormat(value);
2558 return true;
2559 } catch (IllegalArgumentException e) {
2560 return false;
2561 }
2562 }
2563 };
2564
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002565 /**
2566 * Whether the setup wizard has been run before (on first boot), or if
2567 * it still needs to be run.
2568 *
2569 * nonzero = it has been run in the past
2570 * 0 = it has not been run in the past
2571 */
2572 public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run";
2573
Svetoslav683914b2015-01-15 14:22:26 -08002574 /** @hide */
2575 public static final Validator SETUP_WIZARD_HAS_RUN_VALIDATOR = sBooleanValidator;
2576
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002577 /**
2578 * Scaling factor for normal window animations. Setting to 0 will disable window
2579 * animations.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002580 *
2581 * @deprecated Use {@link Global#WINDOW_ANIMATION_SCALE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002582 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002583 @Deprecated
2584 public static final String WINDOW_ANIMATION_SCALE = Global.WINDOW_ANIMATION_SCALE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002585
2586 /**
2587 * Scaling factor for activity transition animations. Setting to 0 will disable window
2588 * animations.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002589 *
2590 * @deprecated Use {@link Global#TRANSITION_ANIMATION_SCALE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002591 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002592 @Deprecated
2593 public static final String TRANSITION_ANIMATION_SCALE = Global.TRANSITION_ANIMATION_SCALE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002594
2595 /**
Chet Haasec38fa1f2012-02-01 16:37:46 -08002596 * Scaling factor for Animator-based animations. This affects both the start delay and
2597 * duration of all such animations. Setting to 0 will cause animations to end immediately.
2598 * The default value is 1.
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002599 *
2600 * @deprecated Use {@link Global#ANIMATOR_DURATION_SCALE} instead
Chet Haasec38fa1f2012-02-01 16:37:46 -08002601 */
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07002602 @Deprecated
2603 public static final String ANIMATOR_DURATION_SCALE = Global.ANIMATOR_DURATION_SCALE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002604
2605 /**
2606 * Control whether the accelerometer will be used to change screen
2607 * orientation. If 0, it will not be used unless explicitly requested
2608 * by the application; if 1, it will be used by default unless explicitly
2609 * disabled by the application.
2610 */
2611 public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation";
2612
Svetoslav683914b2015-01-15 14:22:26 -08002613 /** @hide */
2614 public static final Validator ACCELEROMETER_ROTATION_VALIDATOR = sBooleanValidator;
2615
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002616 /**
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002617 * Default screen rotation when no other policy applies.
2618 * When {@link #ACCELEROMETER_ROTATION} is zero and no on-screen Activity expresses a
2619 * preference, this rotation value will be used. Must be one of the
Brian Muramatsue1d46982010-12-06 17:34:20 -08002620 * {@link android.view.Surface#ROTATION_0 Surface rotation constants}.
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002621 *
Dianne Hackborn16ec0802014-08-15 18:32:33 -07002622 * @see android.view.Display#getRotation
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002623 */
2624 public static final String USER_ROTATION = "user_rotation";
2625
Svetoslav683914b2015-01-15 14:22:26 -08002626 /** @hide */
2627 public static final Validator USER_ROTATION_VALIDATOR =
2628 new InclusiveIntegerRangeValidator(0, 3);
2629
Daniel Sandlerb73617d2010-08-17 00:41:00 -04002630 /**
Jeff Brown207673cd2012-06-05 17:47:11 -07002631 * Control whether the rotation lock toggle in the System UI should be hidden.
2632 * Typically this is done for accessibility purposes to make it harder for
2633 * the user to accidentally toggle the rotation lock while the display rotation
2634 * has been locked for accessibility.
2635 *
2636 * If 0, then rotation lock toggle is not hidden for accessibility (although it may be
2637 * unavailable for other reasons). If 1, then the rotation lock toggle is hidden.
2638 *
2639 * @hide
2640 */
2641 public static final String HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY =
2642 "hide_rotation_lock_toggle_for_accessibility";
2643
Svetoslav683914b2015-01-15 14:22:26 -08002644 /** @hide */
2645 public static final Validator HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY_VALIDATOR =
2646 sBooleanValidator;
2647
Jeff Brown207673cd2012-06-05 17:47:11 -07002648 /**
Daisuke Miyakawa3c60eeb2012-05-08 12:08:25 -07002649 * Whether the phone vibrates when it is ringing due to an incoming call. This will
2650 * be used by Phone and Setting apps; it shouldn't affect other apps.
2651 * The value is boolean (1 or 0).
2652 *
2653 * Note: this is not same as "vibrate on ring", which had been available until ICS.
2654 * It was about AudioManager's setting and thus affected all the applications which
2655 * relied on the setting, while this is purely about the vibration setting for incoming
2656 * calls.
2657 *
2658 * @hide
2659 */
2660 public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
2661
Svetoslav683914b2015-01-15 14:22:26 -08002662 /** @hide */
2663 public static final Validator VIBRATE_WHEN_RINGING_VALIDATOR = sBooleanValidator;
2664
Daisuke Miyakawa3c60eeb2012-05-08 12:08:25 -07002665 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002666 * Whether the audible DTMF tones are played by the dialer when dialing. The value is
2667 * boolean (1 or 0).
2668 */
2669 public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone";
2670
Svetoslav683914b2015-01-15 14:22:26 -08002671 /** @hide */
2672 public static final Validator DTMF_TONE_WHEN_DIALING_VALIDATOR = sBooleanValidator;
2673
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002674 /**
David Kraused0f67152009-06-13 18:01:13 -05002675 * CDMA only settings
2676 * DTMF tone type played by the dialer when dialing.
2677 * 0 = Normal
2678 * 1 = Long
2679 * @hide
2680 */
2681 public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type";
2682
Svetoslav683914b2015-01-15 14:22:26 -08002683 /** @hide */
2684 public static final Validator DTMF_TONE_TYPE_WHEN_DIALING_VALIDATOR = sBooleanValidator;
2685
David Kraused0f67152009-06-13 18:01:13 -05002686 /**
David Kraused0f67152009-06-13 18:01:13 -05002687 * Whether the hearing aid is enabled. The value is
2688 * boolean (1 or 0).
2689 * @hide
2690 */
2691 public static final String HEARING_AID = "hearing_aid";
2692
Svetoslav683914b2015-01-15 14:22:26 -08002693 /** @hide */
2694 public static final Validator HEARING_AID_VALIDATOR = sBooleanValidator;
2695
David Kraused0f67152009-06-13 18:01:13 -05002696 /**
2697 * CDMA only settings
2698 * TTY Mode
2699 * 0 = OFF
2700 * 1 = FULL
2701 * 2 = VCO
2702 * 3 = HCO
2703 * @hide
2704 */
2705 public static final String TTY_MODE = "tty_mode";
2706
Svetoslav683914b2015-01-15 14:22:26 -08002707 /** @hide */
2708 public static final Validator TTY_MODE_VALIDATOR = new InclusiveIntegerRangeValidator(0, 3);
2709
David Kraused0f67152009-06-13 18:01:13 -05002710 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002711 * Whether the sounds effects (key clicks, lid open ...) are enabled. The value is
2712 * boolean (1 or 0).
2713 */
2714 public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002715
Svetoslav683914b2015-01-15 14:22:26 -08002716 /** @hide */
2717 public static final Validator SOUND_EFFECTS_ENABLED_VALIDATOR = sBooleanValidator;
2718
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002719 /**
2720 * Whether the haptic feedback (long presses, ...) are enabled. The value is
2721 * boolean (1 or 0).
2722 */
2723 public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled";
Sanjay Jeyakumar21bf2412009-07-09 13:31:48 -07002724
Svetoslav683914b2015-01-15 14:22:26 -08002725 /** @hide */
2726 public static final Validator HAPTIC_FEEDBACK_ENABLED_VALIDATOR = sBooleanValidator;
2727
Mike LeBeau48603e72009-06-05 00:27:00 +01002728 /**
Bjorn Bringert24abb662010-09-21 12:21:18 +01002729 * @deprecated Each application that shows web suggestions should have its own
2730 * setting for this.
Mike LeBeau48603e72009-06-05 00:27:00 +01002731 */
Bjorn Bringert24abb662010-09-21 12:21:18 +01002732 @Deprecated
Mike LeBeau48603e72009-06-05 00:27:00 +01002733 public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07002734
Svetoslav683914b2015-01-15 14:22:26 -08002735 /** @hide */
2736 public static final Validator SHOW_WEB_SUGGESTIONS_VALIDATOR = sBooleanValidator;
2737
-b master501eec92009-07-06 13:53:11 -07002738 /**
Amith Yamasaniae3ed702009-12-01 19:02:05 -08002739 * Whether the notification LED should repeatedly flash when a notification is
2740 * pending. The value is boolean (1 or 0).
2741 * @hide
2742 */
2743 public static final String NOTIFICATION_LIGHT_PULSE = "notification_light_pulse";
2744
Svetoslav683914b2015-01-15 14:22:26 -08002745 /** @hide */
2746 public static final Validator NOTIFICATION_LIGHT_PULSE_VALIDATOR = sBooleanValidator;
2747
Amith Yamasaniae3ed702009-12-01 19:02:05 -08002748 /**
Dianne Hackborn90d2db32010-02-11 22:19:06 -08002749 * Show pointer location on screen?
2750 * 0 = no
2751 * 1 = yes
2752 * @hide
2753 */
2754 public static final String POINTER_LOCATION = "pointer_location";
2755
Svetoslav683914b2015-01-15 14:22:26 -08002756 /** @hide */
2757 public static final Validator POINTER_LOCATION_VALIDATOR = sBooleanValidator;
2758
Dianne Hackborn90d2db32010-02-11 22:19:06 -08002759 /**
Jeff Browndaf4a122011-08-26 17:14:14 -07002760 * Show touch positions on screen?
2761 * 0 = no
2762 * 1 = yes
2763 * @hide
2764 */
2765 public static final String SHOW_TOUCHES = "show_touches";
2766
Svetoslav683914b2015-01-15 14:22:26 -08002767 /** @hide */
2768 public static final Validator SHOW_TOUCHES_VALIDATOR = sBooleanValidator;
2769
Jeff Browndaf4a122011-08-26 17:14:14 -07002770 /**
Dianne Hackborn16ec0802014-08-15 18:32:33 -07002771 * Log raw orientation data from
Jorim Jaggib10e33f2015-02-04 21:57:40 +01002772 * {@link com.android.server.policy.WindowOrientationListener} for use with the
Jeff Brown4519f072011-01-23 13:16:01 -08002773 * orientationplot.py tool.
2774 * 0 = no
2775 * 1 = yes
2776 * @hide
2777 */
2778 public static final String WINDOW_ORIENTATION_LISTENER_LOG =
2779 "window_orientation_listener_log";
2780
Svetoslav683914b2015-01-15 14:22:26 -08002781 /** @hide */
2782 public static final Validator WINDOW_ORIENTATION_LISTENER_LOG_VALIDATOR = sBooleanValidator;
2783
Jeff Brown4519f072011-01-23 13:16:01 -08002784 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002785 * @deprecated Use {@link android.provider.Settings.Global#POWER_SOUNDS_ENABLED}
2786 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002787 * @hide
2788 */
Christopher Tate06efb532012-08-24 15:29:27 -07002789 @Deprecated
2790 public static final String POWER_SOUNDS_ENABLED = Global.POWER_SOUNDS_ENABLED;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002791
2792 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002793 * @deprecated Use {@link android.provider.Settings.Global#DOCK_SOUNDS_ENABLED}
2794 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002795 * @hide
2796 */
Christopher Tate06efb532012-08-24 15:29:27 -07002797 @Deprecated
2798 public static final String DOCK_SOUNDS_ENABLED = Global.DOCK_SOUNDS_ENABLED;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002799
2800 /**
2801 * Whether to play sounds when the keyguard is shown and dismissed.
2802 * @hide
2803 */
2804 public static final String LOCKSCREEN_SOUNDS_ENABLED = "lockscreen_sounds_enabled";
2805
Svetoslav683914b2015-01-15 14:22:26 -08002806 /** @hide */
2807 public static final Validator LOCKSCREEN_SOUNDS_ENABLED_VALIDATOR = sBooleanValidator;
2808
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002809 /**
Mike Lockwood7bef7392011-10-20 16:51:53 -04002810 * Whether the lockscreen should be completely disabled.
2811 * @hide
2812 */
2813 public static final String LOCKSCREEN_DISABLED = "lockscreen.disabled";
2814
Svetoslav683914b2015-01-15 14:22:26 -08002815 /** @hide */
2816 public static final Validator LOCKSCREEN_DISABLED_VALIDATOR = sBooleanValidator;
2817
Mike Lockwood7bef7392011-10-20 16:51:53 -04002818 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002819 * @deprecated Use {@link android.provider.Settings.Global#LOW_BATTERY_SOUND}
2820 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002821 * @hide
2822 */
Christopher Tate06efb532012-08-24 15:29:27 -07002823 @Deprecated
2824 public static final String LOW_BATTERY_SOUND = Global.LOW_BATTERY_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002825
2826 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002827 * @deprecated Use {@link android.provider.Settings.Global#DESK_DOCK_SOUND}
2828 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002829 * @hide
2830 */
Christopher Tate06efb532012-08-24 15:29:27 -07002831 @Deprecated
2832 public static final String DESK_DOCK_SOUND = Global.DESK_DOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002833
2834 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002835 * @deprecated Use {@link android.provider.Settings.Global#DESK_UNDOCK_SOUND}
2836 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002837 * @hide
2838 */
Christopher Tate06efb532012-08-24 15:29:27 -07002839 @Deprecated
2840 public static final String DESK_UNDOCK_SOUND = Global.DESK_UNDOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002841
2842 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002843 * @deprecated Use {@link android.provider.Settings.Global#CAR_DOCK_SOUND}
2844 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002845 * @hide
2846 */
Christopher Tate06efb532012-08-24 15:29:27 -07002847 @Deprecated
2848 public static final String CAR_DOCK_SOUND = Global.CAR_DOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002849
2850 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002851 * @deprecated Use {@link android.provider.Settings.Global#CAR_UNDOCK_SOUND}
2852 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002853 * @hide
2854 */
Christopher Tate06efb532012-08-24 15:29:27 -07002855 @Deprecated
2856 public static final String CAR_UNDOCK_SOUND = Global.CAR_UNDOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002857
2858 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002859 * @deprecated Use {@link android.provider.Settings.Global#LOCK_SOUND}
2860 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002861 * @hide
2862 */
Christopher Tate06efb532012-08-24 15:29:27 -07002863 @Deprecated
2864 public static final String LOCK_SOUND = Global.LOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002865
2866 /**
Christopher Tate06efb532012-08-24 15:29:27 -07002867 * @deprecated Use {@link android.provider.Settings.Global#UNLOCK_SOUND}
2868 * instead
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002869 * @hide
2870 */
Christopher Tate06efb532012-08-24 15:29:27 -07002871 @Deprecated
2872 public static final String UNLOCK_SOUND = Global.UNLOCK_SOUND;
Daniel Sandler0e9d2af2010-01-25 11:33:03 -05002873
2874 /**
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002875 * Receive incoming SIP calls?
2876 * 0 = no
2877 * 1 = yes
2878 * @hide
2879 */
2880 public static final String SIP_RECEIVE_CALLS = "sip_receive_calls";
2881
Svetoslav683914b2015-01-15 14:22:26 -08002882 /** @hide */
2883 public static final Validator SIP_RECEIVE_CALLS_VALIDATOR = sBooleanValidator;
2884
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002885 /**
2886 * Call Preference String.
2887 * "SIP_ALWAYS" : Always use SIP with network access
2888 * "SIP_ADDRESS_ONLY" : Only if destination is a SIP address
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002889 * @hide
2890 */
2891 public static final String SIP_CALL_OPTIONS = "sip_call_options";
2892
Svetoslav683914b2015-01-15 14:22:26 -08002893 /** @hide */
2894 public static final Validator SIP_CALL_OPTIONS_VALIDATOR = new DiscreteValueValidator(
2895 new String[] {"SIP_ALWAYS", "SIP_ADDRESS_ONLY"});
2896
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002897 /**
2898 * One of the sip call options: Always use SIP with network access.
2899 * @hide
2900 */
2901 public static final String SIP_ALWAYS = "SIP_ALWAYS";
2902
Svetoslav683914b2015-01-15 14:22:26 -08002903 /** @hide */
2904 public static final Validator SIP_ALWAYS_VALIDATOR = sBooleanValidator;
2905
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002906 /**
2907 * One of the sip call options: Only if destination is a SIP address.
2908 * @hide
2909 */
2910 public static final String SIP_ADDRESS_ONLY = "SIP_ADDRESS_ONLY";
2911
Svetoslav683914b2015-01-15 14:22:26 -08002912 /** @hide */
2913 public static final Validator SIP_ADDRESS_ONLY_VALIDATOR = sBooleanValidator;
2914
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002915 /**
Tyler Gunn2c830a22014-09-02 08:39:35 -07002916 * @deprecated Use SIP_ALWAYS or SIP_ADDRESS_ONLY instead. Formerly used to indicate that
2917 * the user should be prompted each time a call is made whether it should be placed using
2918 * SIP. The {@link com.android.providers.settings.DatabaseHelper} replaces this with
2919 * SIP_ADDRESS_ONLY.
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002920 * @hide
2921 */
Tyler Gunn2c830a22014-09-02 08:39:35 -07002922 @Deprecated
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002923 public static final String SIP_ASK_ME_EACH_TIME = "SIP_ASK_ME_EACH_TIME";
2924
Svetoslav683914b2015-01-15 14:22:26 -08002925 /** @hide */
2926 public static final Validator SIP_ASK_ME_EACH_TIME_VALIDATOR = sBooleanValidator;
2927
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08002928 /**
Jeff Brown1a84fd12011-06-02 01:26:32 -07002929 * Pointer speed setting.
2930 * This is an integer value in a range between -7 and +7, so there are 15 possible values.
2931 * -7 = slowest
2932 * 0 = default speed
2933 * +7 = fastest
2934 * @hide
2935 */
2936 public static final String POINTER_SPEED = "pointer_speed";
2937
Svetoslav683914b2015-01-15 14:22:26 -08002938 /** @hide */
2939 public static final Validator POINTER_SPEED_VALIDATOR =
2940 new InclusiveFloatRangeValidator(-7, 7);
2941
Jeff Brown1a84fd12011-06-02 01:26:32 -07002942 /**
Jason Monk56e09b42014-07-18 10:29:14 -04002943 * Whether lock-to-app will be triggered by long-press on recents.
2944 * @hide
2945 */
2946 public static final String LOCK_TO_APP_ENABLED = "lock_to_app_enabled";
2947
Svetoslav683914b2015-01-15 14:22:26 -08002948 /** @hide */
2949 public static final Validator LOCK_TO_APP_ENABLED_VALIDATOR = sBooleanValidator;
2950
Jason Monk56e09b42014-07-18 10:29:14 -04002951 /**
Daniel Sandler2fdb68b2013-10-03 00:12:11 -04002952 * I am the lolrus.
2953 * <p>
2954 * Nonzero values indicate that the user has a bukkit.
2955 * Backward-compatible with <code>PrefGetPreference(prefAllowEasterEggs)</code>.
2956 * @hide
2957 */
2958 public static final String EGG_MODE = "egg_mode";
2959
Svetoslav683914b2015-01-15 14:22:26 -08002960 /** @hide */
2961 public static final Validator EGG_MODE_VALIDATOR = sBooleanValidator;
2962
2963 /**
2964 * IMPORTANT: If you add a new public settings you also have to add it to
2965 * PUBLIC_SETTINGS below. If the new setting is hidden you have to add
2966 * it to PRIVATE_SETTINGS below. Also add a validator that can validate
2967 * the setting value. See an example above.
2968 */
2969
Daniel Sandler2fdb68b2013-10-03 00:12:11 -04002970 /**
-b master501eec92009-07-06 13:53:11 -07002971 * Settings to backup. This is here so that it's in the same place as the settings
2972 * keys and easy to update.
Svetoslav Ganova571a582011-09-20 18:32:20 -07002973 *
2974 * NOTE: Settings are backed up and restored in the order they appear
2975 * in this array. If you have one setting depending on another,
2976 * make sure that they are ordered appropriately.
2977 *
-b master501eec92009-07-06 13:53:11 -07002978 * @hide
2979 */
2980 public static final String[] SETTINGS_TO_BACKUP = {
Christopher Tate66488d62012-10-02 11:58:01 -07002981 STAY_ON_WHILE_PLUGGED_IN, // moved to global
-b master501eec92009-07-06 13:53:11 -07002982 WIFI_USE_STATIC_IP,
2983 WIFI_STATIC_IP,
2984 WIFI_STATIC_GATEWAY,
2985 WIFI_STATIC_NETMASK,
2986 WIFI_STATIC_DNS1,
2987 WIFI_STATIC_DNS2,
2988 BLUETOOTH_DISCOVERABILITY,
2989 BLUETOOTH_DISCOVERABILITY_TIMEOUT,
2990 DIM_SCREEN,
2991 SCREEN_OFF_TIMEOUT,
2992 SCREEN_BRIGHTNESS,
Christopher Tate362aca62009-09-25 15:58:03 -07002993 SCREEN_BRIGHTNESS_MODE,
Dianne Hackbornd9ea4682012-01-20 18:36:40 -08002994 SCREEN_AUTO_BRIGHTNESS_ADJ,
Jeff Brown7f6c2312012-04-13 20:38:38 -07002995 VIBRATE_INPUT_DEVICES,
Amith Yamasani8823c0a82009-07-07 14:30:17 -07002996 MODE_RINGER_STREAMS_AFFECTED,
Amith Yamasani8823c0a82009-07-07 14:30:17 -07002997 VOLUME_VOICE,
2998 VOLUME_SYSTEM,
2999 VOLUME_RING,
3000 VOLUME_MUSIC,
3001 VOLUME_ALARM,
3002 VOLUME_NOTIFICATION,
Eric Laurent484d2882009-12-08 09:05:45 -08003003 VOLUME_BLUETOOTH_SCO,
Amith Yamasani8823c0a82009-07-07 14:30:17 -07003004 VOLUME_VOICE + APPEND_FOR_LAST_AUDIBLE,
3005 VOLUME_SYSTEM + APPEND_FOR_LAST_AUDIBLE,
3006 VOLUME_RING + APPEND_FOR_LAST_AUDIBLE,
3007 VOLUME_MUSIC + APPEND_FOR_LAST_AUDIBLE,
3008 VOLUME_ALARM + APPEND_FOR_LAST_AUDIBLE,
3009 VOLUME_NOTIFICATION + APPEND_FOR_LAST_AUDIBLE,
Eric Laurent484d2882009-12-08 09:05:45 -08003010 VOLUME_BLUETOOTH_SCO + APPEND_FOR_LAST_AUDIBLE,
-b master501eec92009-07-06 13:53:11 -07003011 TEXT_AUTO_REPLACE,
3012 TEXT_AUTO_CAPS,
3013 TEXT_AUTO_PUNCTUATE,
3014 TEXT_SHOW_PASSWORD,
Christopher Tate66488d62012-10-02 11:58:01 -07003015 AUTO_TIME, // moved to global
3016 AUTO_TIME_ZONE, // moved to global
-b master501eec92009-07-06 13:53:11 -07003017 TIME_12_24,
3018 DATE_FORMAT,
-b master501eec92009-07-06 13:53:11 -07003019 DTMF_TONE_WHEN_DIALING,
3020 DTMF_TONE_TYPE_WHEN_DIALING,
-b master501eec92009-07-06 13:53:11 -07003021 HEARING_AID,
3022 TTY_MODE,
3023 SOUND_EFFECTS_ENABLED,
3024 HAPTIC_FEEDBACK_ENABLED,
Christopher Tate66488d62012-10-02 11:58:01 -07003025 POWER_SOUNDS_ENABLED, // moved to global
3026 DOCK_SOUNDS_ENABLED, // moved to global
Christopher Tate14c2d792010-02-25 16:49:44 -08003027 LOCKSCREEN_SOUNDS_ENABLED,
Amith Yamasaniae3ed702009-12-01 19:02:05 -08003028 SHOW_WEB_SUGGESTIONS,
Mike Lockwoodeabe8bf2010-08-31 14:35:23 -04003029 NOTIFICATION_LIGHT_PULSE,
Chung-yih Wang042e9bd2010-08-31 17:43:39 +08003030 SIP_CALL_OPTIONS,
Nick Pelly038cabe2010-09-23 16:12:11 -07003031 SIP_RECEIVE_CALLS,
Jeff Brown1a84fd12011-06-02 01:26:32 -07003032 POINTER_SPEED,
Amith Yamasani622bf2222013-09-06 13:54:28 -07003033 VIBRATE_WHEN_RINGING,
3034 RINGTONE,
Jason Monk94cfd9d2014-10-31 13:18:21 -04003035 LOCK_TO_APP_ENABLED,
Amith Yamasani622bf2222013-09-06 13:54:28 -07003036 NOTIFICATION_SOUND
-b master501eec92009-07-06 13:53:11 -07003037 };
3038
Sailesh Nepal1bd78762014-02-11 22:32:21 -08003039 /**
Svetoslav683914b2015-01-15 14:22:26 -08003040 * These are all pulbic system settings
3041 *
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07003042 * @hide
3043 */
Svetoslav683914b2015-01-15 14:22:26 -08003044 public static final Set<String> PUBLIC_SETTINGS = new ArraySet<>();
3045 static {
3046 PUBLIC_SETTINGS.add(END_BUTTON_BEHAVIOR);
3047 PUBLIC_SETTINGS.add(WIFI_USE_STATIC_IP);
3048 PUBLIC_SETTINGS.add(WIFI_STATIC_IP);
3049 PUBLIC_SETTINGS.add(WIFI_STATIC_GATEWAY);
3050 PUBLIC_SETTINGS.add(WIFI_STATIC_NETMASK);
3051 PUBLIC_SETTINGS.add(WIFI_STATIC_DNS1);
3052 PUBLIC_SETTINGS.add(WIFI_STATIC_DNS2);
3053 PUBLIC_SETTINGS.add(BLUETOOTH_DISCOVERABILITY);
3054 PUBLIC_SETTINGS.add(BLUETOOTH_DISCOVERABILITY_TIMEOUT);
3055 PUBLIC_SETTINGS.add(NEXT_ALARM_FORMATTED);
3056 PUBLIC_SETTINGS.add(FONT_SCALE);
3057 PUBLIC_SETTINGS.add(DIM_SCREEN);
3058 PUBLIC_SETTINGS.add(SCREEN_OFF_TIMEOUT);
3059 PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS);
3060 PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS_MODE);
3061 PUBLIC_SETTINGS.add(MODE_RINGER_STREAMS_AFFECTED);
3062 PUBLIC_SETTINGS.add(MUTE_STREAMS_AFFECTED);
3063 PUBLIC_SETTINGS.add(VIBRATE_ON);
3064 PUBLIC_SETTINGS.add(VOLUME_RING);
3065 PUBLIC_SETTINGS.add(VOLUME_SYSTEM);
3066 PUBLIC_SETTINGS.add(VOLUME_VOICE);
3067 PUBLIC_SETTINGS.add(VOLUME_MUSIC);
3068 PUBLIC_SETTINGS.add(VOLUME_ALARM);
3069 PUBLIC_SETTINGS.add(VOLUME_NOTIFICATION);
3070 PUBLIC_SETTINGS.add(VOLUME_BLUETOOTH_SCO);
3071 PUBLIC_SETTINGS.add(RINGTONE);
3072 PUBLIC_SETTINGS.add(NOTIFICATION_SOUND);
3073 PUBLIC_SETTINGS.add(ALARM_ALERT);
3074 PUBLIC_SETTINGS.add(TEXT_AUTO_REPLACE);
3075 PUBLIC_SETTINGS.add(TEXT_AUTO_CAPS);
3076 PUBLIC_SETTINGS.add(TEXT_AUTO_PUNCTUATE);
3077 PUBLIC_SETTINGS.add(TEXT_SHOW_PASSWORD);
3078 PUBLIC_SETTINGS.add(SHOW_GTALK_SERVICE_STATUS);
3079 PUBLIC_SETTINGS.add(WALLPAPER_ACTIVITY);
3080 PUBLIC_SETTINGS.add(TIME_12_24);
3081 PUBLIC_SETTINGS.add(DATE_FORMAT);
3082 PUBLIC_SETTINGS.add(SETUP_WIZARD_HAS_RUN);
3083 PUBLIC_SETTINGS.add(ACCELEROMETER_ROTATION);
3084 PUBLIC_SETTINGS.add(USER_ROTATION);
3085 PUBLIC_SETTINGS.add(DTMF_TONE_WHEN_DIALING);
3086 PUBLIC_SETTINGS.add(SOUND_EFFECTS_ENABLED);
3087 PUBLIC_SETTINGS.add(HAPTIC_FEEDBACK_ENABLED);
3088 PUBLIC_SETTINGS.add(SHOW_WEB_SUGGESTIONS);
3089 }
3090
3091 /**
3092 * These are all hidden system settings.
3093 *
3094 * @hide
3095 */
3096 public static final Set<String> PRIVATE_SETTINGS = new ArraySet<>();
3097 static {
3098 PRIVATE_SETTINGS.add(WIFI_USE_STATIC_IP);
3099 PRIVATE_SETTINGS.add(END_BUTTON_BEHAVIOR);
3100 PRIVATE_SETTINGS.add(ADVANCED_SETTINGS);
3101 PRIVATE_SETTINGS.add(SCREEN_AUTO_BRIGHTNESS_ADJ);
3102 PRIVATE_SETTINGS.add(VIBRATE_INPUT_DEVICES);
3103 PRIVATE_SETTINGS.add(VOLUME_MASTER);
3104 PRIVATE_SETTINGS.add(VOLUME_MASTER_MUTE);
3105 PRIVATE_SETTINGS.add(MICROPHONE_MUTE);
3106 PRIVATE_SETTINGS.add(NOTIFICATIONS_USE_RING_VOLUME);
3107 PRIVATE_SETTINGS.add(VIBRATE_IN_SILENT);
3108 PRIVATE_SETTINGS.add(MEDIA_BUTTON_RECEIVER);
3109 PRIVATE_SETTINGS.add(HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY);
3110 PRIVATE_SETTINGS.add(VIBRATE_WHEN_RINGING);
3111 PRIVATE_SETTINGS.add(DTMF_TONE_TYPE_WHEN_DIALING);
3112 PRIVATE_SETTINGS.add(HEARING_AID);
3113 PRIVATE_SETTINGS.add(TTY_MODE);
3114 PRIVATE_SETTINGS.add(NOTIFICATION_LIGHT_PULSE);
3115 PRIVATE_SETTINGS.add(POINTER_LOCATION);
3116 PRIVATE_SETTINGS.add(SHOW_TOUCHES);
3117 PRIVATE_SETTINGS.add(WINDOW_ORIENTATION_LISTENER_LOG);
3118 PRIVATE_SETTINGS.add(POWER_SOUNDS_ENABLED);
3119 PRIVATE_SETTINGS.add(DOCK_SOUNDS_ENABLED);
3120 PRIVATE_SETTINGS.add(LOCKSCREEN_SOUNDS_ENABLED);
3121 PRIVATE_SETTINGS.add(LOCKSCREEN_DISABLED);
3122 PRIVATE_SETTINGS.add(LOW_BATTERY_SOUND);
3123 PRIVATE_SETTINGS.add(DESK_DOCK_SOUND);
3124 PRIVATE_SETTINGS.add(DESK_UNDOCK_SOUND);
3125 PRIVATE_SETTINGS.add(CAR_DOCK_SOUND);
3126 PRIVATE_SETTINGS.add(CAR_UNDOCK_SOUND);
3127 PRIVATE_SETTINGS.add(LOCK_SOUND);
3128 PRIVATE_SETTINGS.add(UNLOCK_SOUND);
3129 PRIVATE_SETTINGS.add(SIP_RECEIVE_CALLS);
3130 PRIVATE_SETTINGS.add(SIP_CALL_OPTIONS);
3131 PRIVATE_SETTINGS.add(SIP_ALWAYS);
3132 PRIVATE_SETTINGS.add(SIP_ADDRESS_ONLY);
3133 PRIVATE_SETTINGS.add(SIP_ASK_ME_EACH_TIME);
3134 PRIVATE_SETTINGS.add(POINTER_SPEED);
3135 PRIVATE_SETTINGS.add(LOCK_TO_APP_ENABLED);
3136 PRIVATE_SETTINGS.add(EGG_MODE);
3137 }
3138
3139 /**
3140 * These are all pulbic system settings
3141 *
3142 * @hide
3143 */
3144 public static final Map<String, Validator> VALIDATORS = new ArrayMap<>();
3145 static {
3146 VALIDATORS.put(END_BUTTON_BEHAVIOR,END_BUTTON_BEHAVIOR_VALIDATOR);
3147 VALIDATORS.put(WIFI_USE_STATIC_IP, WIFI_USE_STATIC_IP_VALIDATOR);
3148 VALIDATORS.put(BLUETOOTH_DISCOVERABILITY, BLUETOOTH_DISCOVERABILITY_VALIDATOR);
3149 VALIDATORS.put(BLUETOOTH_DISCOVERABILITY_TIMEOUT,
3150 BLUETOOTH_DISCOVERABILITY_TIMEOUT_VALIDATOR);
3151 VALIDATORS.put(NEXT_ALARM_FORMATTED, NEXT_ALARM_FORMATTED_VALIDATOR);
3152 VALIDATORS.put(FONT_SCALE, FONT_SCALE_VALIDATOR);
3153 VALIDATORS.put(DIM_SCREEN, DIM_SCREEN_VALIDATOR);
3154 VALIDATORS.put(SCREEN_OFF_TIMEOUT, SCREEN_OFF_TIMEOUT_VALIDATOR);
3155 VALIDATORS.put(SCREEN_BRIGHTNESS, SCREEN_BRIGHTNESS_VALIDATOR);
3156 VALIDATORS.put(SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_VALIDATOR);
3157 VALIDATORS.put(MODE_RINGER_STREAMS_AFFECTED, MODE_RINGER_STREAMS_AFFECTED_VALIDATOR);
3158 VALIDATORS.put(MUTE_STREAMS_AFFECTED, MUTE_STREAMS_AFFECTED_VALIDATOR);
3159 VALIDATORS.put(VIBRATE_ON, VIBRATE_ON_VALIDATOR);
3160 VALIDATORS.put(VOLUME_RING, VOLUME_RING_VALIDATOR);
3161 VALIDATORS.put(VOLUME_SYSTEM, VOLUME_SYSTEM_VALIDATOR);
3162 VALIDATORS.put(VOLUME_VOICE, VOLUME_VOICE_VALIDATOR);
3163 VALIDATORS.put(VOLUME_MUSIC, VOLUME_MUSIC_VALIDATOR);
3164 VALIDATORS.put(VOLUME_ALARM, VOLUME_ALARM_VALIDATOR);
3165 VALIDATORS.put(VOLUME_NOTIFICATION, VOLUME_NOTIFICATION_VALIDATOR);
3166 VALIDATORS.put(VOLUME_BLUETOOTH_SCO, VOLUME_BLUETOOTH_SCO_VALIDATOR);
3167 VALIDATORS.put(RINGTONE, RINGTONE_VALIDATOR);
3168 VALIDATORS.put(NOTIFICATION_SOUND, NOTIFICATION_SOUND_VALIDATOR);
3169 VALIDATORS.put(ALARM_ALERT, ALARM_ALERT_VALIDATOR);
3170 VALIDATORS.put(TEXT_AUTO_REPLACE, TEXT_AUTO_REPLACE_VALIDATOR);
3171 VALIDATORS.put(TEXT_AUTO_CAPS, TEXT_AUTO_CAPS_VALIDATOR);
3172 VALIDATORS.put(TEXT_AUTO_PUNCTUATE, TEXT_AUTO_PUNCTUATE_VALIDATOR);
3173 VALIDATORS.put(TEXT_SHOW_PASSWORD, TEXT_SHOW_PASSWORD_VALIDATOR);
3174 VALIDATORS.put(SHOW_GTALK_SERVICE_STATUS, SHOW_GTALK_SERVICE_STATUS_VALIDATOR);
3175 VALIDATORS.put(WALLPAPER_ACTIVITY, WALLPAPER_ACTIVITY_VALIDATOR);
3176 VALIDATORS.put(TIME_12_24, TIME_12_24_VALIDATOR);
3177 VALIDATORS.put(DATE_FORMAT, DATE_FORMAT_VALIDATOR);
3178 VALIDATORS.put(SETUP_WIZARD_HAS_RUN, SETUP_WIZARD_HAS_RUN_VALIDATOR);
3179 VALIDATORS.put(ACCELEROMETER_ROTATION, ACCELEROMETER_ROTATION_VALIDATOR);
3180 VALIDATORS.put(USER_ROTATION, USER_ROTATION_VALIDATOR);
3181 VALIDATORS.put(DTMF_TONE_WHEN_DIALING, DTMF_TONE_WHEN_DIALING_VALIDATOR);
3182 VALIDATORS.put(SOUND_EFFECTS_ENABLED, SOUND_EFFECTS_ENABLED_VALIDATOR);
3183 VALIDATORS.put(HAPTIC_FEEDBACK_ENABLED, HAPTIC_FEEDBACK_ENABLED_VALIDATOR);
3184 VALIDATORS.put(SHOW_WEB_SUGGESTIONS, SHOW_WEB_SUGGESTIONS_VALIDATOR);
3185 VALIDATORS.put(WIFI_USE_STATIC_IP, WIFI_USE_STATIC_IP_VALIDATOR);
3186 VALIDATORS.put(END_BUTTON_BEHAVIOR, END_BUTTON_BEHAVIOR_VALIDATOR);
3187 VALIDATORS.put(ADVANCED_SETTINGS, ADVANCED_SETTINGS_VALIDATOR);
3188 VALIDATORS.put(SCREEN_AUTO_BRIGHTNESS_ADJ, SCREEN_AUTO_BRIGHTNESS_ADJ_VALIDATOR);
3189 VALIDATORS.put(VIBRATE_INPUT_DEVICES, VIBRATE_INPUT_DEVICES_VALIDATOR);
3190 VALIDATORS.put(VOLUME_MASTER, VOLUME_MASTER_VALIDATOR);
3191 VALIDATORS.put(VOLUME_MASTER_MUTE, VOLUME_MASTER_MUTE_VALIDATOR);
3192 VALIDATORS.put(MICROPHONE_MUTE, MICROPHONE_MUTE_VALIDATOR);
3193 VALIDATORS.put(NOTIFICATIONS_USE_RING_VOLUME, NOTIFICATIONS_USE_RING_VOLUME_VALIDATOR);
3194 VALIDATORS.put(VIBRATE_IN_SILENT, VIBRATE_IN_SILENT_VALIDATOR);
3195 VALIDATORS.put(MEDIA_BUTTON_RECEIVER, MEDIA_BUTTON_RECEIVER_VALIDATOR);
3196 VALIDATORS.put(HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY,
3197 HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY_VALIDATOR);
3198 VALIDATORS.put(VIBRATE_WHEN_RINGING, VIBRATE_WHEN_RINGING_VALIDATOR);
3199 VALIDATORS.put(DTMF_TONE_TYPE_WHEN_DIALING, DTMF_TONE_TYPE_WHEN_DIALING_VALIDATOR);
3200 VALIDATORS.put(HEARING_AID, HEARING_AID_VALIDATOR);
3201 VALIDATORS.put(TTY_MODE, TTY_MODE_VALIDATOR);
3202 VALIDATORS.put(NOTIFICATION_LIGHT_PULSE, NOTIFICATION_LIGHT_PULSE_VALIDATOR);
3203 VALIDATORS.put(POINTER_LOCATION, POINTER_LOCATION_VALIDATOR);
3204 VALIDATORS.put(SHOW_TOUCHES, SHOW_TOUCHES_VALIDATOR);
3205 VALIDATORS.put(WINDOW_ORIENTATION_LISTENER_LOG,
3206 WINDOW_ORIENTATION_LISTENER_LOG_VALIDATOR);
3207 VALIDATORS.put(LOCKSCREEN_SOUNDS_ENABLED, LOCKSCREEN_SOUNDS_ENABLED_VALIDATOR);
3208 VALIDATORS.put(LOCKSCREEN_DISABLED, LOCKSCREEN_DISABLED_VALIDATOR);
3209 VALIDATORS.put(SIP_RECEIVE_CALLS, SIP_RECEIVE_CALLS_VALIDATOR);
3210 VALIDATORS.put(SIP_CALL_OPTIONS, SIP_CALL_OPTIONS_VALIDATOR);
3211 VALIDATORS.put(SIP_ALWAYS, SIP_ALWAYS_VALIDATOR);
3212 VALIDATORS.put(SIP_ADDRESS_ONLY, SIP_ADDRESS_ONLY_VALIDATOR);
3213 VALIDATORS.put(SIP_ASK_ME_EACH_TIME, SIP_ASK_ME_EACH_TIME_VALIDATOR);
3214 VALIDATORS.put(POINTER_SPEED, POINTER_SPEED_VALIDATOR);
3215 VALIDATORS.put(LOCK_TO_APP_ENABLED, LOCK_TO_APP_ENABLED_VALIDATOR);
3216 VALIDATORS.put(EGG_MODE, EGG_MODE_VALIDATOR);
3217 VALIDATORS.put(WIFI_STATIC_IP, WIFI_STATIC_IP_VALIDATOR);
3218 VALIDATORS.put(WIFI_STATIC_GATEWAY, WIFI_STATIC_GATEWAY_VALIDATOR);
3219 VALIDATORS.put(WIFI_STATIC_NETMASK, WIFI_STATIC_NETMASK_VALIDATOR);
3220 VALIDATORS.put(WIFI_STATIC_DNS1, WIFI_STATIC_DNS1_VALIDATOR);
3221 VALIDATORS.put(WIFI_STATIC_DNS2, WIFI_STATIC_DNS2_VALIDATOR);
3222 }
3223
3224 /**
3225 * These entries are considered common between the personal and the managed profile,
3226 * since the managed profile doesn't get to change them.
3227 */
3228 private static final Set<String> CLONE_TO_MANAGED_PROFILE = new ArraySet<>();
3229 static {
3230 CLONE_TO_MANAGED_PROFILE.add(DATE_FORMAT);
3231 CLONE_TO_MANAGED_PROFILE.add(HAPTIC_FEEDBACK_ENABLED);
3232 CLONE_TO_MANAGED_PROFILE.add(SOUND_EFFECTS_ENABLED);
3233 CLONE_TO_MANAGED_PROFILE.add(TEXT_SHOW_PASSWORD);
3234 CLONE_TO_MANAGED_PROFILE.add(TIME_12_24);
3235 }
3236
3237 /** @hide */
3238 public static void getCloneToManagedProfileSettings(Set<String> outKeySet) {
3239 outKeySet.addAll(CLONE_TO_MANAGED_PROFILE);
3240 }
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07003241
3242 /**
Sailesh Nepal1bd78762014-02-11 22:32:21 -08003243 * When to use Wi-Fi calling
3244 *
3245 * @see android.telephony.TelephonyManager.WifiCallingChoices
3246 * @hide
3247 */
3248 public static final String WHEN_TO_MAKE_WIFI_CALLS = "when_to_make_wifi_calls";
3249
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003250 // Settings moved to Settings.Secure
3251
3252 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003253 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED}
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003254 * instead
3255 */
3256 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003257 public static final String ADB_ENABLED = Global.ADB_ENABLED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003258
3259 /**
3260 * @deprecated Use {@link android.provider.Settings.Secure#ANDROID_ID} instead
3261 */
3262 @Deprecated
3263 public static final String ANDROID_ID = Secure.ANDROID_ID;
3264
3265 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003266 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003267 */
3268 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003269 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003270
3271 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003272 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003273 */
3274 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003275 public static final String DATA_ROAMING = Global.DATA_ROAMING;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003276
3277 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003278 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003279 */
3280 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003281 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003282
3283 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07003284 * @deprecated Use {@link android.provider.Settings.Global#HTTP_PROXY} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003285 */
3286 @Deprecated
Jeff Sharkey625239a2012-09-26 22:03:49 -07003287 public static final String HTTP_PROXY = Global.HTTP_PROXY;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003288
3289 /**
Christopher Tateaa036a22014-05-19 16:33:27 -07003290 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003291 */
3292 @Deprecated
Christopher Tateaa036a22014-05-19 16:33:27 -07003293 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003294
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003295 /**
3296 * @deprecated Use {@link android.provider.Settings.Secure#LOCATION_PROVIDERS_ALLOWED}
3297 * instead
3298 */
3299 @Deprecated
3300 public static final String LOCATION_PROVIDERS_ALLOWED = Secure.LOCATION_PROVIDERS_ALLOWED;
3301
3302 /**
3303 * @deprecated Use {@link android.provider.Settings.Secure#LOGGING_ID} instead
3304 */
3305 @Deprecated
3306 public static final String LOGGING_ID = Secure.LOGGING_ID;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003307
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003308 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003309 * @deprecated Use {@link android.provider.Settings.Global#NETWORK_PREFERENCE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003310 */
3311 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003312 public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003313
3314 /**
3315 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_ENABLED}
3316 * instead
3317 */
3318 @Deprecated
3319 public static final String PARENTAL_CONTROL_ENABLED = Secure.PARENTAL_CONTROL_ENABLED;
3320
3321 /**
3322 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_LAST_UPDATE}
3323 * instead
3324 */
3325 @Deprecated
3326 public static final String PARENTAL_CONTROL_LAST_UPDATE = Secure.PARENTAL_CONTROL_LAST_UPDATE;
3327
3328 /**
3329 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_REDIRECT_URL}
3330 * instead
3331 */
3332 @Deprecated
3333 public static final String PARENTAL_CONTROL_REDIRECT_URL =
3334 Secure.PARENTAL_CONTROL_REDIRECT_URL;
3335
3336 /**
3337 * @deprecated Use {@link android.provider.Settings.Secure#SETTINGS_CLASSNAME} instead
3338 */
3339 @Deprecated
3340 public static final String SETTINGS_CLASSNAME = Secure.SETTINGS_CLASSNAME;
3341
3342 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003343 * @deprecated Use {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003344 */
3345 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003346 public static final String USB_MASS_STORAGE_ENABLED = Global.USB_MASS_STORAGE_ENABLED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003347
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003348 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003349 * @deprecated Use {@link android.provider.Settings.Global#USE_GOOGLE_MAIL} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003350 */
3351 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003352 public static final String USE_GOOGLE_MAIL = Global.USE_GOOGLE_MAIL;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003353
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003354 /**
3355 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003356 * {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003357 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003358 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003359 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 -08003360
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003361 /**
3362 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003363 * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead
Dianne Hackborn4a51c202009-08-21 15:14:02 -07003364 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003365 @Deprecated
3366 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
Christopher Tate06efb532012-08-24 15:29:27 -07003367 Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003368
3369 /**
3370 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003371 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003372 */
3373 @Deprecated
3374 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
Christopher Tate06efb532012-08-24 15:29:27 -07003375 Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003376
3377 /**
3378 * @deprecated Use
Christopher Tate06efb532012-08-24 15:29:27 -07003379 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003380 */
3381 @Deprecated
3382 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY =
Christopher Tate06efb532012-08-24 15:29:27 -07003383 Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003384
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003385 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003386 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT}
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003387 * instead
3388 */
3389 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003390 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 -08003391
3392 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003393 * @deprecated Use {@link android.provider.Settings.Global#WIFI_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003394 */
3395 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003396 public static final String WIFI_ON = Global.WIFI_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003397
3398 /**
3399 * @deprecated Use
3400 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE}
3401 * instead
3402 */
3403 @Deprecated
3404 public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE =
3405 Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE;
3406
3407 /**
3408 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_AP_COUNT} instead
3409 */
3410 @Deprecated
3411 public static final String WIFI_WATCHDOG_AP_COUNT = Secure.WIFI_WATCHDOG_AP_COUNT;
3412
3413 /**
3414 * @deprecated Use
3415 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS} instead
3416 */
3417 @Deprecated
3418 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS =
3419 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07003420
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003421 /**
3422 * @deprecated Use
3423 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED} instead
3424 */
3425 @Deprecated
3426 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED =
3427 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED;
3428
3429 /**
3430 * @deprecated Use
3431 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS}
3432 * instead
3433 */
3434 @Deprecated
3435 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS =
3436 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS;
3437
3438 /**
3439 * @deprecated Use
3440 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT} instead
3441 */
3442 @Deprecated
3443 public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT =
3444 Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT;
3445
3446 /**
3447 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_MAX_AP_CHECKS}
3448 * instead
3449 */
3450 @Deprecated
3451 public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = Secure.WIFI_WATCHDOG_MAX_AP_CHECKS;
3452
3453 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003454 * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003455 */
3456 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07003457 public static final String WIFI_WATCHDOG_ON = Global.WIFI_WATCHDOG_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003458
3459 /**
3460 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_COUNT} instead
3461 */
3462 @Deprecated
3463 public static final String WIFI_WATCHDOG_PING_COUNT = Secure.WIFI_WATCHDOG_PING_COUNT;
3464
3465 /**
3466 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_DELAY_MS}
3467 * instead
3468 */
3469 @Deprecated
3470 public static final String WIFI_WATCHDOG_PING_DELAY_MS = Secure.WIFI_WATCHDOG_PING_DELAY_MS;
3471
3472 /**
3473 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_TIMEOUT_MS}
3474 * instead
3475 */
3476 @Deprecated
3477 public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS =
3478 Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS;
3479 }
3480
3481 /**
3482 * Secure system settings, containing system preferences that applications
3483 * can read but are not allowed to write. These are for preferences that
3484 * the user must explicitly modify through the system UI or specialized
3485 * APIs for those values, not modified directly by applications.
3486 */
3487 public static final class Secure extends NameValueTable {
3488 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version";
3489
Dianne Hackborn139748f2012-09-24 11:36:57 -07003490 /**
3491 * The content:// style URL for this table
3492 */
3493 public static final Uri CONTENT_URI =
3494 Uri.parse("content://" + AUTHORITY + "/secure");
3495
Brad Fitzpatrick1877d012010-03-04 17:48:13 -08003496 // Populated lazily, guarded by class object:
Dianne Hackborn139748f2012-09-24 11:36:57 -07003497 private static final NameValueCache sNameValueCache = new NameValueCache(
3498 SYS_PROP_SETTING_VERSION,
3499 CONTENT_URI,
3500 CALL_METHOD_GET_SECURE,
3501 CALL_METHOD_PUT_SECURE);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003502
Amith Yamasani52c489c2012-03-28 11:42:42 -07003503 private static ILockSettings sLockSettings = null;
3504
Amith Yamasani7ab8c4a2012-04-06 09:27:12 -07003505 private static boolean sIsSystemProcess;
Amith Yamasani52c489c2012-03-28 11:42:42 -07003506 private static final HashSet<String> MOVED_TO_LOCK_SETTINGS;
Christopher Tate06efb532012-08-24 15:29:27 -07003507 private static final HashSet<String> MOVED_TO_GLOBAL;
Amith Yamasani52c489c2012-03-28 11:42:42 -07003508 static {
3509 MOVED_TO_LOCK_SETTINGS = new HashSet<String>(3);
3510 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_ENABLED);
3511 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_VISIBLE);
3512 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED);
Christopher Tate06efb532012-08-24 15:29:27 -07003513
3514 MOVED_TO_GLOBAL = new HashSet<String>();
3515 MOVED_TO_GLOBAL.add(Settings.Global.ADB_ENABLED);
3516 MOVED_TO_GLOBAL.add(Settings.Global.ASSISTED_GPS_ENABLED);
3517 MOVED_TO_GLOBAL.add(Settings.Global.BLUETOOTH_ON);
Christopher Tate58f41ec2013-01-11 15:40:36 -08003518 MOVED_TO_GLOBAL.add(Settings.Global.BUGREPORT_IN_POWER_MENU);
Christopher Tate06efb532012-08-24 15:29:27 -07003519 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_CELL_BROADCAST_SMS);
3520 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_ROAMING_MODE);
3521 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_SUBSCRIPTION_MODE);
3522 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE);
3523 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI);
3524 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ROAMING);
3525 MOVED_TO_GLOBAL.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED);
3526 MOVED_TO_GLOBAL.add(Settings.Global.DEVICE_PROVISIONED);
3527 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_DENSITY_FORCED);
3528 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_SIZE_FORCED);
3529 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE);
3530 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE);
Christopher Tate06efb532012-08-24 15:29:27 -07003531 MOVED_TO_GLOBAL.add(Settings.Global.MOBILE_DATA);
3532 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_BUCKET_DURATION);
3533 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_DELETE_AGE);
3534 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_PERSIST_BYTES);
3535 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_ROTATE_AGE);
3536 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_ENABLED);
3537 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_GLOBAL_ALERT_BYTES);
3538 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_POLL_INTERVAL);
Christopher Tate06efb532012-08-24 15:29:27 -07003539 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_SAMPLE_ENABLED);
3540 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_TIME_CACHE_MAX_AGE);
3541 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_BUCKET_DURATION);
3542 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_DELETE_AGE);
3543 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_PERSIST_BYTES);
3544 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_ROTATE_AGE);
3545 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_BUCKET_DURATION);
3546 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_DELETE_AGE);
3547 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_PERSIST_BYTES);
3548 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_ROTATE_AGE);
3549 MOVED_TO_GLOBAL.add(Settings.Global.NETWORK_PREFERENCE);
3550 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_DIFF);
3551 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_SPACING);
3552 MOVED_TO_GLOBAL.add(Settings.Global.NTP_SERVER);
3553 MOVED_TO_GLOBAL.add(Settings.Global.NTP_TIMEOUT);
3554 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_ERROR_POLL_COUNT);
3555 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS);
3556 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT);
3557 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS);
3558 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT);
3559 MOVED_TO_GLOBAL.add(Settings.Global.SAMPLING_PROFILER_MS);
3560 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL);
3561 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_REDIR_HOST);
3562 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_TARGET_URL);
3563 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_APN);
3564 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_REQUIRED);
3565 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_SUPPORTED);
Christopher Tate06efb532012-08-24 15:29:27 -07003566 MOVED_TO_GLOBAL.add(Settings.Global.USB_MASS_STORAGE_ENABLED);
3567 MOVED_TO_GLOBAL.add(Settings.Global.USE_GOOGLE_MAIL);
Robert Greenwalt3ea0c992013-10-03 21:13:49 +00003568 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_COUNTRY_CODE);
Christopher Tate06efb532012-08-24 15:29:27 -07003569 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FRAMEWORK_SCAN_INTERVAL_MS);
3570 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FREQUENCY_BAND);
3571 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_IDLE_MS);
3572 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT);
3573 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS);
3574 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
3575 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY);
3576 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NUM_OPEN_NETWORKS_KEPT);
3577 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ON);
3578 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_DEVICE_NAME);
3579 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE);
3580 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
3581 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED);
vandwalle7c3606c2014-03-31 19:12:07 -07003582 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ENHANCED_AUTO_JOIN);
3583 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORK_SHOW_RSSI);
Christopher Tate06efb532012-08-24 15:29:27 -07003584 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_ON);
3585 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED);
Christopher Tate06efb532012-08-24 15:29:27 -07003586 MOVED_TO_GLOBAL.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON);
Christopher Tatec868b642012-09-12 17:41:04 -07003587 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_ENABLE);
3588 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT);
3589 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE);
3590 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS);
3591 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS);
3592 MOVED_TO_GLOBAL.add(Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS);
Christopher Tate06efb532012-08-24 15:29:27 -07003593 MOVED_TO_GLOBAL.add(Settings.Global.WTF_IS_FATAL);
Jeff Sharkey625239a2012-09-26 22:03:49 -07003594 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD);
3595 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_THRESHOLD);
3596 MOVED_TO_GLOBAL.add(Settings.Global.SEND_ACTION_APP_ERROR);
3597 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_AGE_SECONDS);
3598 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_MAX_FILES);
3599 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_KB);
3600 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_PERCENT);
3601 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_RESERVE_PERCENT);
3602 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_TAG_PREFIX);
3603 MOVED_TO_GLOBAL.add(Settings.Global.ERROR_LOGCAT_PREFIX);
3604 MOVED_TO_GLOBAL.add(Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL);
3605 MOVED_TO_GLOBAL.add(Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD);
3606 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE);
3607 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES);
3608 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES);
3609 MOVED_TO_GLOBAL.add(Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS);
3610 MOVED_TO_GLOBAL.add(Settings.Global.CONNECTIVITY_CHANGE_DELAY);
3611 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED);
3612 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_SERVER);
3613 MOVED_TO_GLOBAL.add(Settings.Global.NSD_ON);
3614 MOVED_TO_GLOBAL.add(Settings.Global.SET_INSTALL_LOCATION);
3615 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_INSTALL_LOCATION);
3616 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY);
3617 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY);
3618 MOVED_TO_GLOBAL.add(Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT);
3619 MOVED_TO_GLOBAL.add(Settings.Global.HTTP_PROXY);
3620 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_HOST);
3621 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_PORT);
3622 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST);
3623 MOVED_TO_GLOBAL.add(Settings.Global.SET_GLOBAL_HTTP_PROXY);
3624 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_DNS_SERVER);
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07003625 MOVED_TO_GLOBAL.add(Settings.Global.PREFERRED_NETWORK_MODE);
Hui Shu22671772014-10-01 21:41:07 +00003626 MOVED_TO_GLOBAL.add(Settings.Global.WEBVIEW_DATA_REDUCTION_PROXY_KEY);
Christopher Tate06efb532012-08-24 15:29:27 -07003627 }
3628
Christopher Tate66488d62012-10-02 11:58:01 -07003629 /** @hide */
Svetoslav683914b2015-01-15 14:22:26 -08003630 public static void getMovedToGlobalSettings(Set<String> outKeySet) {
Christopher Tate66488d62012-10-02 11:58:01 -07003631 outKeySet.addAll(MOVED_TO_GLOBAL);
3632 }
3633
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003634 /**
3635 * Look up a name in the database.
3636 * @param resolver to access the database with
3637 * @param name to look up in the table
3638 * @return the corresponding value, or null if not present
3639 */
Dianne Hackborn139748f2012-09-24 11:36:57 -07003640 public static String getString(ContentResolver resolver, String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07003641 return getStringForUser(resolver, name, UserHandle.myUserId());
3642 }
3643
3644 /** @hide */
Dianne Hackborn139748f2012-09-24 11:36:57 -07003645 public static String getStringForUser(ContentResolver resolver, String name,
Christopher Tate06efb532012-08-24 15:29:27 -07003646 int userHandle) {
3647 if (MOVED_TO_GLOBAL.contains(name)) {
3648 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure"
3649 + " to android.provider.Settings.Global.");
3650 return Global.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003651 }
Amith Yamasani52c489c2012-03-28 11:42:42 -07003652
Dianne Hackborn139748f2012-09-24 11:36:57 -07003653 if (MOVED_TO_LOCK_SETTINGS.contains(name)) {
3654 synchronized (Secure.class) {
3655 if (sLockSettings == null) {
3656 sLockSettings = ILockSettings.Stub.asInterface(
3657 (IBinder) ServiceManager.getService("lock_settings"));
3658 sIsSystemProcess = Process.myUid() == Process.SYSTEM_UID;
3659 }
3660 }
3661 if (sLockSettings != null && !sIsSystemProcess) {
3662 try {
3663 return sLockSettings.getString(name, "0", userHandle);
3664 } catch (RemoteException re) {
3665 // Fall through
3666 }
Amith Yamasani52c489c2012-03-28 11:42:42 -07003667 }
3668 }
3669
Christopher Tate06efb532012-08-24 15:29:27 -07003670 return sNameValueCache.getStringForUser(resolver, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003671 }
3672
3673 /**
3674 * Store a name/value pair into the database.
3675 * @param resolver to access the database with
3676 * @param name to store
3677 * @param value to associate with the name
3678 * @return true if the value was set, false on database errors
3679 */
Christopher Tate06efb532012-08-24 15:29:27 -07003680 public static boolean putString(ContentResolver resolver, String name, String value) {
3681 return putStringForUser(resolver, name, value, UserHandle.myUserId());
3682 }
3683
3684 /** @hide */
3685 public static boolean putStringForUser(ContentResolver resolver, String name, String value,
3686 int userHandle) {
Julia Reynolds82735bc2014-09-04 16:43:30 -04003687 if (LOCATION_MODE.equals(name)) {
3688 // HACK ALERT: temporary hack to work around b/10491283.
3689 // TODO: once b/10491283 fixed, remove this hack
3690 return setLocationModeForUser(resolver, Integer.parseInt(value), userHandle);
3691 }
Christopher Tate06efb532012-08-24 15:29:27 -07003692 if (MOVED_TO_GLOBAL.contains(name)) {
3693 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System"
3694 + " to android.provider.Settings.Global");
3695 return Global.putStringForUser(resolver, name, value, userHandle);
3696 }
Christopher Tate06efb532012-08-24 15:29:27 -07003697 return sNameValueCache.putStringForUser(resolver, name, value, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003698 }
3699
3700 /**
3701 * Construct the content URI for a particular name/value pair,
3702 * useful for monitoring changes with a ContentObserver.
3703 * @param name to look up in the table
3704 * @return the corresponding content URI, or null if not present
3705 */
3706 public static Uri getUriFor(String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07003707 if (MOVED_TO_GLOBAL.contains(name)) {
3708 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure"
3709 + " to android.provider.Settings.Global, returning global URI.");
3710 return Global.getUriFor(Global.CONTENT_URI, name);
3711 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003712 return getUriFor(CONTENT_URI, name);
3713 }
3714
3715 /**
3716 * Convenience function for retrieving a single secure settings value
3717 * as an integer. Note that internally setting values are always
3718 * stored as strings; this function converts the string to an integer
3719 * for you. The default value will be returned if the setting is
3720 * not defined or not an integer.
3721 *
3722 * @param cr The ContentResolver to access.
3723 * @param name The name of the setting to retrieve.
3724 * @param def Value to return if the setting is not defined.
3725 *
3726 * @return The setting's current value, or 'def' if it is not defined
3727 * or not a valid integer.
3728 */
3729 public static int getInt(ContentResolver cr, String name, int def) {
Christopher Tate06efb532012-08-24 15:29:27 -07003730 return getIntForUser(cr, name, def, UserHandle.myUserId());
3731 }
3732
3733 /** @hide */
3734 public static int getIntForUser(ContentResolver cr, String name, int def, int userHandle) {
Tom O'Neill7f6f4572013-08-27 10:53:15 -07003735 if (LOCATION_MODE.equals(name)) {
3736 // HACK ALERT: temporary hack to work around b/10491283.
3737 // TODO: once b/10491283 fixed, remove this hack
3738 return getLocationModeForUser(cr, userHandle);
3739 }
Christopher Tate06efb532012-08-24 15:29:27 -07003740 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003741 try {
3742 return v != null ? Integer.parseInt(v) : def;
3743 } catch (NumberFormatException e) {
3744 return def;
3745 }
3746 }
3747
3748 /**
3749 * Convenience function for retrieving a single secure settings value
3750 * as an integer. Note that internally setting values are always
3751 * stored as strings; this function converts the string to an integer
3752 * for you.
3753 * <p>
3754 * This version does not take a default value. If the setting has not
3755 * been set, or the string value is not a number,
3756 * it throws {@link SettingNotFoundException}.
3757 *
3758 * @param cr The ContentResolver to access.
3759 * @param name The name of the setting to retrieve.
3760 *
3761 * @throws SettingNotFoundException Thrown if a setting by the given
3762 * name can't be found or the setting value is not an integer.
3763 *
3764 * @return The setting's current value.
3765 */
3766 public static int getInt(ContentResolver cr, String name)
3767 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07003768 return getIntForUser(cr, name, UserHandle.myUserId());
3769 }
3770
3771 /** @hide */
3772 public static int getIntForUser(ContentResolver cr, String name, int userHandle)
3773 throws SettingNotFoundException {
Tom O'Neill7f6f4572013-08-27 10:53:15 -07003774 if (LOCATION_MODE.equals(name)) {
3775 // HACK ALERT: temporary hack to work around b/10491283.
3776 // TODO: once b/10491283 fixed, remove this hack
3777 return getLocationModeForUser(cr, userHandle);
3778 }
Christopher Tate06efb532012-08-24 15:29:27 -07003779 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003780 try {
3781 return Integer.parseInt(v);
3782 } catch (NumberFormatException e) {
3783 throw new SettingNotFoundException(name);
3784 }
3785 }
3786
3787 /**
3788 * Convenience function for updating a single settings value as an
3789 * integer. This will either create a new entry in the table if the
3790 * given name does not exist, or modify the value of the existing row
3791 * with that name. Note that internally setting values are always
3792 * stored as strings, so this function converts the given value to a
3793 * string before storing it.
3794 *
3795 * @param cr The ContentResolver to access.
3796 * @param name The name of the setting to modify.
3797 * @param value The new value for the setting.
3798 * @return true if the value was set, false on database errors
3799 */
3800 public static boolean putInt(ContentResolver cr, String name, int value) {
Christopher Tate06efb532012-08-24 15:29:27 -07003801 return putIntForUser(cr, name, value, UserHandle.myUserId());
3802 }
3803
3804 /** @hide */
3805 public static boolean putIntForUser(ContentResolver cr, String name, int value,
3806 int userHandle) {
3807 return putStringForUser(cr, name, Integer.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003808 }
3809
3810 /**
3811 * Convenience function for retrieving a single secure settings value
3812 * as a {@code long}. Note that internally setting values are always
3813 * stored as strings; this function converts the string to a {@code long}
3814 * for you. The default value will be returned if the setting is
3815 * not defined or not a {@code long}.
3816 *
3817 * @param cr The ContentResolver to access.
3818 * @param name The name of the setting to retrieve.
3819 * @param def Value to return if the setting is not defined.
3820 *
3821 * @return The setting's current value, or 'def' if it is not defined
3822 * or not a valid {@code long}.
3823 */
3824 public static long getLong(ContentResolver cr, String name, long def) {
Christopher Tate06efb532012-08-24 15:29:27 -07003825 return getLongForUser(cr, name, def, UserHandle.myUserId());
3826 }
3827
3828 /** @hide */
3829 public static long getLongForUser(ContentResolver cr, String name, long def,
3830 int userHandle) {
3831 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003832 long value;
3833 try {
3834 value = valString != null ? Long.parseLong(valString) : def;
3835 } catch (NumberFormatException e) {
3836 value = def;
3837 }
3838 return value;
3839 }
3840
3841 /**
3842 * Convenience function for retrieving a single secure settings value
3843 * as a {@code long}. Note that internally setting values are always
3844 * stored as strings; this function converts the string to a {@code long}
3845 * for you.
3846 * <p>
3847 * This version does not take a default value. If the setting has not
3848 * been set, or the string value is not a number,
3849 * it throws {@link SettingNotFoundException}.
3850 *
3851 * @param cr The ContentResolver to access.
3852 * @param name The name of the setting to retrieve.
3853 *
3854 * @return The setting's current value.
3855 * @throws SettingNotFoundException Thrown if a setting by the given
3856 * name can't be found or the setting value is not an integer.
3857 */
3858 public static long getLong(ContentResolver cr, String name)
3859 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07003860 return getLongForUser(cr, name, UserHandle.myUserId());
3861 }
3862
3863 /** @hide */
3864 public static long getLongForUser(ContentResolver cr, String name, int userHandle)
3865 throws SettingNotFoundException {
3866 String valString = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003867 try {
3868 return Long.parseLong(valString);
3869 } catch (NumberFormatException e) {
3870 throw new SettingNotFoundException(name);
3871 }
3872 }
3873
3874 /**
3875 * Convenience function for updating a secure settings value as a long
3876 * integer. This will either create a new entry in the table if the
3877 * given name does not exist, or modify the value of the existing row
3878 * with that name. Note that internally setting values are always
3879 * stored as strings, so this function converts the given value to a
3880 * string before storing it.
3881 *
3882 * @param cr The ContentResolver to access.
3883 * @param name The name of the setting to modify.
3884 * @param value The new value for the setting.
3885 * @return true if the value was set, false on database errors
3886 */
3887 public static boolean putLong(ContentResolver cr, String name, long value) {
Christopher Tate06efb532012-08-24 15:29:27 -07003888 return putLongForUser(cr, name, value, UserHandle.myUserId());
3889 }
3890
3891 /** @hide */
3892 public static boolean putLongForUser(ContentResolver cr, String name, long value,
3893 int userHandle) {
3894 return putStringForUser(cr, name, Long.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003895 }
3896
3897 /**
3898 * Convenience function for retrieving a single secure settings value
3899 * as a floating point number. Note that internally setting values are
3900 * always stored as strings; this function converts the string to an
3901 * float for you. The default value will be returned if the setting
3902 * is not defined or not a valid float.
3903 *
3904 * @param cr The ContentResolver to access.
3905 * @param name The name of the setting to retrieve.
3906 * @param def Value to return if the setting is not defined.
3907 *
3908 * @return The setting's current value, or 'def' if it is not defined
3909 * or not a valid float.
3910 */
3911 public static float getFloat(ContentResolver cr, String name, float def) {
Christopher Tate06efb532012-08-24 15:29:27 -07003912 return getFloatForUser(cr, name, def, UserHandle.myUserId());
3913 }
3914
3915 /** @hide */
3916 public static float getFloatForUser(ContentResolver cr, String name, float def,
3917 int userHandle) {
3918 String v = getStringForUser(cr, name, userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003919 try {
3920 return v != null ? Float.parseFloat(v) : def;
3921 } catch (NumberFormatException e) {
3922 return def;
3923 }
3924 }
3925
3926 /**
3927 * Convenience function for retrieving a single secure settings value
3928 * as a float. Note that internally setting values are always
3929 * stored as strings; this function converts the string to a float
3930 * for you.
3931 * <p>
3932 * This version does not take a default value. If the setting has not
3933 * been set, or the string value is not a number,
3934 * it throws {@link SettingNotFoundException}.
3935 *
3936 * @param cr The ContentResolver to access.
3937 * @param name The name of the setting to retrieve.
3938 *
3939 * @throws SettingNotFoundException Thrown if a setting by the given
3940 * name can't be found or the setting value is not a float.
3941 *
3942 * @return The setting's current value.
3943 */
3944 public static float getFloat(ContentResolver cr, String name)
3945 throws SettingNotFoundException {
Christopher Tate06efb532012-08-24 15:29:27 -07003946 return getFloatForUser(cr, name, UserHandle.myUserId());
3947 }
3948
3949 /** @hide */
3950 public static float getFloatForUser(ContentResolver cr, String name, int userHandle)
3951 throws SettingNotFoundException {
3952 String v = getStringForUser(cr, name, userHandle);
Brian Muramatsue1d46982010-12-06 17:34:20 -08003953 if (v == null) {
3954 throw new SettingNotFoundException(name);
3955 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003956 try {
3957 return Float.parseFloat(v);
3958 } catch (NumberFormatException e) {
3959 throw new SettingNotFoundException(name);
3960 }
3961 }
3962
3963 /**
3964 * Convenience function for updating a single settings value as a
3965 * floating point number. This will either create a new entry in the
3966 * table if the given name does not exist, or modify the value of the
3967 * existing row with that name. Note that internally setting values
3968 * are always stored as strings, so this function converts the given
3969 * value to a string before storing it.
3970 *
3971 * @param cr The ContentResolver to access.
3972 * @param name The name of the setting to modify.
3973 * @param value The new value for the setting.
3974 * @return true if the value was set, false on database errors
3975 */
3976 public static boolean putFloat(ContentResolver cr, String name, float value) {
Christopher Tate06efb532012-08-24 15:29:27 -07003977 return putFloatForUser(cr, name, value, UserHandle.myUserId());
3978 }
3979
3980 /** @hide */
3981 public static boolean putFloatForUser(ContentResolver cr, String name, float value,
3982 int userHandle) {
3983 return putStringForUser(cr, name, Float.toString(value), userHandle);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003984 }
3985
3986 /**
Christopher Tate06efb532012-08-24 15:29:27 -07003987 * @deprecated Use {@link android.provider.Settings.Global#DEVELOPMENT_SETTINGS_ENABLED}
3988 * instead
Dianne Hackborn895f99e2012-02-02 11:49:12 -08003989 */
Christopher Tate06efb532012-08-24 15:29:27 -07003990 @Deprecated
3991 public static final String DEVELOPMENT_SETTINGS_ENABLED =
3992 Global.DEVELOPMENT_SETTINGS_ENABLED;
Dianne Hackborn895f99e2012-02-02 11:49:12 -08003993
3994 /**
Dianne Hackborn5773bfdb2012-07-13 13:24:15 -07003995 * When the user has enable the option to have a "bug report" command
3996 * in the power menu.
Christopher Tate58f41ec2013-01-11 15:40:36 -08003997 * @deprecated Use {@link android.provider.Settings.Global#BUGREPORT_IN_POWER_MENU} instead
Dianne Hackborn5773bfdb2012-07-13 13:24:15 -07003998 * @hide
3999 */
Christopher Tate58f41ec2013-01-11 15:40:36 -08004000 @Deprecated
Dianne Hackborn5773bfdb2012-07-13 13:24:15 -07004001 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu";
4002
4003 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004004 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004005 */
Christopher Tate06efb532012-08-24 15:29:27 -07004006 @Deprecated
4007 public static final String ADB_ENABLED = Global.ADB_ENABLED;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004008
4009 /**
4010 * Setting to allow mock locations and location provider status to be injected into the
4011 * LocationManager service for testing purposes during application development. These
4012 * locations and status values override actual location and status information generated
4013 * by network, gps, or other location providers.
4014 */
4015 public static final String ALLOW_MOCK_LOCATION = "mock_location";
4016
4017 /**
Doug Zongkerd8893db2010-01-26 12:29:44 -08004018 * A 64-bit number (as a hex string) that is randomly
Scott Main44895332013-11-12 09:23:13 -08004019 * generated when the user first sets up the device and should remain
4020 * constant for the lifetime of the user's device. The value may
4021 * change if a factory reset is performed on the device.
4022 * <p class="note"><strong>Note:</strong> When a device has <a
4023 * href="{@docRoot}about/versions/android-4.2.html#MultipleUsers">multiple users</a>
4024 * (available on certain devices running Android 4.2 or higher), each user appears as a
4025 * completely separate device, so the {@code ANDROID_ID} value is unique to each
4026 * user.</p>
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004027 */
4028 public static final String ANDROID_ID = "android_id";
4029
4030 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004031 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004032 */
Christopher Tate06efb532012-08-24 15:29:27 -07004033 @Deprecated
4034 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004035
4036 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004037 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004038 */
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004039 @Deprecated
Christopher Tate06efb532012-08-24 15:29:27 -07004040 public static final String DATA_ROAMING = Global.DATA_ROAMING;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004041
4042 /**
4043 * Setting to record the input method used by default, holding the ID
4044 * of the desired method.
4045 */
4046 public static final String DEFAULT_INPUT_METHOD = "default_input_method";
4047
4048 /**
satokab751aa2010-09-14 19:17:36 +09004049 * Setting to record the input method subtype used by default, holding the ID
4050 * of the desired method.
4051 */
4052 public static final String SELECTED_INPUT_METHOD_SUBTYPE =
4053 "selected_input_method_subtype";
4054
4055 /**
satok723a27e2010-11-11 14:58:11 +09004056 * Setting to record the history of input method subtype, holding the pair of ID of IME
4057 * and its last used subtype.
4058 * @hide
4059 */
4060 public static final String INPUT_METHODS_SUBTYPE_HISTORY =
4061 "input_methods_subtype_history";
4062
4063 /**
satok5c58dfc2010-12-14 21:54:47 +09004064 * Setting to record the visibility of input method selector
4065 */
4066 public static final String INPUT_METHOD_SELECTOR_VISIBILITY =
4067 "input_method_selector_visibility";
4068
4069 /**
Dianne Hackborn91097de2014-04-04 18:02:06 -07004070 * The currently selected voice interaction service flattened ComponentName.
4071 * @hide
4072 */
4073 public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
4074
4075 /**
Zhihai Xuaf5971e2013-06-10 20:28:31 -07004076 * bluetooth HCI snoop log configuration
4077 * @hide
4078 */
4079 public static final String BLUETOOTH_HCI_LOG =
4080 "bluetooth_hci_log";
4081
4082 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004083 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004084 */
Christopher Tate06efb532012-08-24 15:29:27 -07004085 @Deprecated
4086 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004087
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004088 /**
Russell Brennerde6ae442012-09-26 20:53:10 -07004089 * Whether the current user has been set up via setup wizard (0 = false, 1 = true)
4090 * @hide
4091 */
4092 public static final String USER_SETUP_COMPLETE = "user_setup_complete";
4093
4094 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004095 * List of input methods that are currently enabled. This is a string
4096 * containing the IDs of all enabled input methods, each ID separated
4097 * by ':'.
4098 */
4099 public static final String ENABLED_INPUT_METHODS = "enabled_input_methods";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004100
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004101 /**
Amith Yamasanie861ec12010-03-24 21:39:27 -07004102 * List of system input methods that are currently disabled. This is a string
4103 * containing the IDs of all disabled input methods, each ID separated
4104 * by ':'.
4105 * @hide
4106 */
4107 public static final String DISABLED_SYSTEM_INPUT_METHODS = "disabled_system_input_methods";
4108
4109 /**
Michael Wright7b5a96b2014-08-09 19:28:42 -07004110 * Whether to show the IME when a hard keyboard is connected. This is a boolean that
4111 * determines if the IME should be shown when a hard keyboard is attached.
4112 * @hide
4113 */
4114 public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard";
4115
4116 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07004117 * Host name and port for global http proxy. Uses ':' seperator for
4118 * between host and port.
4119 *
4120 * @deprecated Use {@link Global#HTTP_PROXY}
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004121 */
Jeff Sharkey625239a2012-09-26 22:03:49 -07004122 @Deprecated
4123 public static final String HTTP_PROXY = Global.HTTP_PROXY;
Robert Greenwalte90aa5e2010-09-01 11:34:05 -07004124
4125 /**
Christopher Tateaa036a22014-05-19 16:33:27 -07004126 * Whether applications can be installed for this user via the system's
4127 * {@link Intent#ACTION_INSTALL_PACKAGE} mechanism.
4128 *
4129 * <p>1 = permit app installation via the system package installer intent
4130 * <p>0 = do not allow use of the package installer
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004131 */
Christopher Tateaa036a22014-05-19 16:33:27 -07004132 public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004133
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004134 /**
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004135 * Comma-separated list of location providers that activities may access. Do not rely on
4136 * this value being present in settings.db or on ContentObserver notifications on the
4137 * corresponding Uri.
Tom O'Neilla324ac72013-08-26 14:40:23 -07004138 *
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004139 * @deprecated use {@link #LOCATION_MODE} and
4140 * {@link LocationManager#MODE_CHANGED_ACTION} (or
4141 * {@link LocationManager#PROVIDERS_CHANGED_ACTION})
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004142 */
Tom O'Neilla324ac72013-08-26 14:40:23 -07004143 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004144 public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004145
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004146 /**
Tom O'Neill7f6f4572013-08-27 10:53:15 -07004147 * The degree of location access enabled by the user.
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004148 * <p>
Tom O'Neill7f6f4572013-08-27 10:53:15 -07004149 * When used with {@link #putInt(ContentResolver, String, int)}, must be one of {@link
4150 * #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, {@link
4151 * #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. When used with {@link
4152 * #getInt(ContentResolver, String)}, the caller must gracefully handle additional location
4153 * modes that might be added in the future.
Tom O'Neill923c0dc2014-03-03 11:07:55 -08004154 * <p>
4155 * Note: do not rely on this value being present in settings.db or on ContentObserver
4156 * notifications for the corresponding Uri. Use {@link LocationManager#MODE_CHANGED_ACTION}
4157 * to receive changes in this value.
Tom O'Neilla324ac72013-08-26 14:40:23 -07004158 */
4159 public static final String LOCATION_MODE = "location_mode";
4160
4161 /**
Tom O'Neill7f6f4572013-08-27 10:53:15 -07004162 * Location access disabled.
Tom O'Neill1f48b782013-08-19 18:14:56 -07004163 */
4164 public static final int LOCATION_MODE_OFF = 0;
4165 /**
4166 * Network Location Provider disabled, but GPS and other sensors enabled.
4167 */
4168 public static final int LOCATION_MODE_SENSORS_ONLY = 1;
4169 /**
Tom O'Neilld5759432013-09-11 11:03:03 -07004170 * Reduced power usage, such as limiting the number of GPS updates per hour. Requests
4171 * with {@link android.location.Criteria#POWER_HIGH} may be downgraded to
4172 * {@link android.location.Criteria#POWER_MEDIUM}.
Tom O'Neill1f48b782013-08-19 18:14:56 -07004173 */
4174 public static final int LOCATION_MODE_BATTERY_SAVING = 2;
4175 /**
4176 * Best-effort location computation allowed.
4177 */
4178 public static final int LOCATION_MODE_HIGH_ACCURACY = 3;
4179
4180 /**
Danielle Millett925a7d82012-03-19 18:02:20 -04004181 * A flag containing settings used for biometric weak
4182 * @hide
4183 */
Adrian Roos230635e2015-01-07 20:50:29 +01004184 @Deprecated
Danielle Millett925a7d82012-03-19 18:02:20 -04004185 public static final String LOCK_BIOMETRIC_WEAK_FLAGS =
4186 "lock_biometric_weak_flags";
4187
4188 /**
Jason Monk94cfd9d2014-10-31 13:18:21 -04004189 * Whether lock-to-app will lock the keyguard when exiting.
4190 * @hide
4191 */
4192 public static final String LOCK_TO_APP_EXIT_LOCKED = "lock_to_app_exit_locked";
4193
4194 /**
Amith Yamasani156c4352010-03-05 17:10:03 -08004195 * Whether autolock is enabled (0 = false, 1 = true)
Adrian Roos9dd16eb2015-01-08 16:20:49 +01004196 *
4197 * @deprecated Use {@link android.app.KeyguardManager} to determine the state and security
4198 * level of the keyguard.
Amith Yamasani156c4352010-03-05 17:10:03 -08004199 */
Adrian Roos9dd16eb2015-01-08 16:20:49 +01004200 @Deprecated
Amith Yamasani156c4352010-03-05 17:10:03 -08004201 public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
4202
4203 /**
4204 * Whether lock pattern is visible as user enters (0 = false, 1 = true)
4205 */
4206 public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
4207
4208 /**
Jeff Sharkey5ed9d682012-10-10 14:28:27 -07004209 * Whether lock pattern will vibrate as user enters (0 = false, 1 =
4210 * true)
4211 *
4212 * @deprecated Starting in {@link VERSION_CODES#JELLY_BEAN_MR1} the
4213 * lockscreen uses
4214 * {@link Settings.System#HAPTIC_FEEDBACK_ENABLED}.
Amith Yamasani156c4352010-03-05 17:10:03 -08004215 */
Jeff Sharkey5ed9d682012-10-10 14:28:27 -07004216 @Deprecated
4217 public static final String
4218 LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
Amith Yamasani156c4352010-03-05 17:10:03 -08004219
4220 /**
Jim Millerbc4603b2010-08-30 21:21:34 -07004221 * This preference allows the device to be locked given time after screen goes off,
4222 * subject to current DeviceAdmin policy limits.
4223 * @hide
4224 */
4225 public static final String LOCK_SCREEN_LOCK_AFTER_TIMEOUT = "lock_screen_lock_after_timeout";
4226
4227
4228 /**
John Spurlock5f050e52012-10-27 10:44:19 -04004229 * This preference contains the string that shows for owner info on LockScreen.
Jim Miller253a5ef2010-10-13 20:57:29 -07004230 * @hide
Jim Miller187ec582013-04-15 18:27:54 -07004231 * @deprecated
Jim Miller253a5ef2010-10-13 20:57:29 -07004232 */
4233 public static final String LOCK_SCREEN_OWNER_INFO = "lock_screen_owner_info";
4234
4235 /**
John Spurlock5f050e52012-10-27 10:44:19 -04004236 * Ids of the user-selected appwidgets on the lockscreen (comma-delimited).
Jim Millerf229e4d2012-09-12 20:32:50 -07004237 * @hide
4238 */
Adrian Roos230635e2015-01-07 20:50:29 +01004239 @Deprecated
Michael Jurkaaa2859a2012-10-24 12:46:49 -07004240 public static final String LOCK_SCREEN_APPWIDGET_IDS =
4241 "lock_screen_appwidget_ids";
Jim Millerf229e4d2012-09-12 20:32:50 -07004242
4243 /**
Jim Miller08fa40c2014-04-29 18:18:47 -07004244 * List of enrolled fingerprint identifiers (comma-delimited).
4245 * @hide
4246 */
4247 public static final String USER_FINGERPRINT_IDS = "user_fingerprint_ids";
4248
4249 /**
Jim Miller51117262012-11-04 17:58:09 -08004250 * Id of the appwidget shown on the lock screen when appwidgets are disabled.
4251 * @hide
4252 */
Adrian Roos230635e2015-01-07 20:50:29 +01004253 @Deprecated
Jim Miller51117262012-11-04 17:58:09 -08004254 public static final String LOCK_SCREEN_FALLBACK_APPWIDGET_ID =
4255 "lock_screen_fallback_appwidget_id";
4256
4257 /**
John Spurlock5f050e52012-10-27 10:44:19 -04004258 * Index of the lockscreen appwidget to restore, -1 if none.
4259 * @hide
4260 */
Adrian Roos230635e2015-01-07 20:50:29 +01004261 @Deprecated
John Spurlock5f050e52012-10-27 10:44:19 -04004262 public static final String LOCK_SCREEN_STICKY_APPWIDGET =
4263 "lock_screen_sticky_appwidget";
4264
4265 /**
4266 * This preference enables showing the owner info on LockScreen.
Jim Miller253a5ef2010-10-13 20:57:29 -07004267 * @hide
Jim Miller187ec582013-04-15 18:27:54 -07004268 * @deprecated
Jim Miller253a5ef2010-10-13 20:57:29 -07004269 */
4270 public static final String LOCK_SCREEN_OWNER_INFO_ENABLED =
4271 "lock_screen_owner_info_enabled";
4272
4273 /**
Dan Sandler5d7c3cc2014-02-18 17:35:15 -05004274 * When set by a user, allows notifications to be shown atop a securely locked screen
4275 * in their full "private" form (same as when the device is unlocked).
Dan Sandlerfd16d562014-02-13 18:43:31 -08004276 * @hide
4277 */
4278 public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS =
4279 "lock_screen_allow_private_notifications";
4280
4281 /**
Chris Wrencd8f4f72014-08-27 18:48:13 -04004282 * Set by the system to track if the user needs to see the call to action for
4283 * the lockscreen notification policy.
4284 * @hide
4285 */
4286 public static final String SHOW_NOTE_ABOUT_NOTIFICATION_HIDING =
4287 "show_note_about_notification_hiding";
4288
4289 /**
Adrian Roos3870d452014-09-05 18:22:28 +02004290 * Set to 1 by the system after trust agents have been initialized.
4291 * @hide
4292 */
4293 public static final String TRUST_AGENTS_INITIALIZED =
4294 "trust_agents_initialized";
4295
4296 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004297 * The Logging ID (a unique 64-bit value) as a hex string.
4298 * Used as a pseudonymous identifier for logging.
4299 * @deprecated This identifier is poorly initialized and has
4300 * many collisions. It should not be used.
4301 */
4302 @Deprecated
4303 public static final String LOGGING_ID = "logging_id";
4304
4305 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004306 * @deprecated Use {@link android.provider.Settings.Global#NETWORK_PREFERENCE} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004307 */
Christopher Tate06efb532012-08-24 15:29:27 -07004308 @Deprecated
4309 public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004310
4311 /**
Dan Egnor1c9131c2010-02-13 10:38:55 -08004312 * No longer supported.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004313 */
4314 public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004315
4316 /**
Dan Egnor1c9131c2010-02-13 10:38:55 -08004317 * No longer supported.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004318 */
4319 public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004320
4321 /**
Dan Egnor1c9131c2010-02-13 10:38:55 -08004322 * No longer supported.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004323 */
4324 public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004325
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004326 /**
4327 * Settings classname to launch when Settings is clicked from All
4328 * Applications. Needed because of user testing between the old
4329 * and new Settings apps.
4330 */
4331 // TODO: 881807
4332 public static final String SETTINGS_CLASSNAME = "settings_classname";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004333
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004334 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004335 * @deprecated Use {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004336 */
Christopher Tate06efb532012-08-24 15:29:27 -07004337 @Deprecated
4338 public static final String USB_MASS_STORAGE_ENABLED = Global.USB_MASS_STORAGE_ENABLED;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004339
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004340 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004341 * @deprecated Use {@link android.provider.Settings.Global#USE_GOOGLE_MAIL} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004342 */
Christopher Tate06efb532012-08-24 15:29:27 -07004343 @Deprecated
4344 public static final String USE_GOOGLE_MAIL = Global.USE_GOOGLE_MAIL;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004345
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004346 /**
svetoslavganov75986cf2009-05-14 22:28:01 -07004347 * If accessibility is enabled.
4348 */
4349 public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled";
4350
4351 /**
Svetoslav Ganov00aabf72011-07-21 11:35:03 -07004352 * If touch exploration is enabled.
Svetoslav Ganov35bfede2011-07-14 17:57:06 -07004353 */
Svetoslav Ganov00aabf72011-07-21 11:35:03 -07004354 public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
Svetoslav Ganov35bfede2011-07-14 17:57:06 -07004355
4356 /**
svetoslavganov75986cf2009-05-14 22:28:01 -07004357 * List of the enabled accessibility providers.
4358 */
4359 public static final String ENABLED_ACCESSIBILITY_SERVICES =
4360 "enabled_accessibility_services";
4361
4362 /**
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07004363 * List of the accessibility services to which the user has granted
Svetoslav Ganov9a4c5cd2012-05-30 14:06:32 -07004364 * permission to put the device into touch exploration mode.
4365 *
4366 * @hide
4367 */
4368 public static final String TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES =
4369 "touch_exploration_granted_accessibility_services";
4370
4371 /**
Svetoslav Ganov55f937a2011-12-05 11:42:07 -08004372 * Whether to speak passwords while in accessibility mode.
4373 */
4374 public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
4375
4376 /**
Chris Craikcce47eb2014-07-16 15:12:15 -07004377 * Whether to draw text with high contrast while in accessibility mode.
4378 *
4379 * @hide
4380 */
4381 public static final String ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED =
4382 "high_text_contrast_enabled";
4383
4384 /**
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004385 * If injection of accessibility enhancing JavaScript screen-reader
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004386 * is enabled.
4387 * <p>
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004388 * Note: The JavaScript based screen-reader is served by the
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004389 * Google infrastructure and enable users with disabilities to
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07004390 * efficiently navigate in and explore web content.
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004391 * </p>
4392 * <p>
4393 * This property represents a boolean value.
4394 * </p>
4395 * @hide
4396 */
4397 public static final String ACCESSIBILITY_SCRIPT_INJECTION =
4398 "accessibility_script_injection";
4399
4400 /**
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004401 * The URL for the injected JavaScript based screen-reader used
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07004402 * for providing accessibility of content in WebView.
Svetoslav Ganov3ca5a742011-12-06 15:24:37 -08004403 * <p>
4404 * Note: The JavaScript based screen-reader is served by the
4405 * Google infrastructure and enable users with disabilities to
4406 * efficiently navigate in and explore web content.
4407 * </p>
4408 * <p>
4409 * This property represents a string value.
4410 * </p>
4411 * @hide
4412 */
4413 public static final String ACCESSIBILITY_SCREEN_READER_URL =
4414 "accessibility_script_injection_url";
4415
4416 /**
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07004417 * Key bindings for navigation in built-in accessibility support for web content.
4418 * <p>
4419 * Note: These key bindings are for the built-in accessibility navigation for
4420 * web content which is used as a fall back solution if JavaScript in a WebView
4421 * is not enabled or the user has not opted-in script injection from Google.
4422 * </p>
4423 * <p>
4424 * The bindings are separated by semi-colon. A binding is a mapping from
4425 * a key to a sequence of actions (for more details look at
4426 * android.webkit.AccessibilityInjector). A key is represented as the hexademical
4427 * string representation of an integer obtained from a meta state (optional) shifted
4428 * sixteen times left and bitwise ored with a key code. An action is represented
4429 * as a hexademical string representation of an integer where the first two digits
4430 * are navigation action index, the second, the third, and the fourth digit pairs
4431 * represent the action arguments. The separate actions in a binding are colon
4432 * separated. The key and the action sequence it maps to are separated by equals.
4433 * </p>
4434 * <p>
4435 * For example, the binding below maps the DPAD right button to traverse the
4436 * current navigation axis once without firing an accessibility event and to
4437 * perform the same traversal again but to fire an event:
4438 * <code>
4439 * 0x16=0x01000100:0x01000101;
4440 * </code>
4441 * </p>
4442 * <p>
4443 * The goal of this binding is to enable dynamic rebinding of keys to
4444 * navigation actions for web content without requiring a framework change.
4445 * </p>
4446 * <p>
4447 * This property represents a string value.
4448 * </p>
4449 * @hide
4450 */
4451 public static final String ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS =
4452 "accessibility_web_content_key_bindings";
4453
4454 /**
Svetoslav Ganov1cf70bb2012-08-06 10:53:34 -07004455 * Setting that specifies whether the display magnification is enabled.
4456 * Display magnifications allows the user to zoom in the display content
4457 * and is targeted to low vision users. The current magnification scale
4458 * is controlled by {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE}.
4459 *
4460 * @hide
4461 */
4462 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED =
4463 "accessibility_display_magnification_enabled";
4464
4465 /**
4466 * Setting that specifies what the display magnification scale is.
4467 * Display magnifications allows the user to zoom in the display
4468 * content and is targeted to low vision users. Whether a display
4469 * magnification is performed is controlled by
4470 * {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED}
4471 *
4472 * @hide
4473 */
4474 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE =
4475 "accessibility_display_magnification_scale";
4476
4477 /**
4478 * Setting that specifies whether the display magnification should be
4479 * automatically updated. If this fearture is enabled the system will
4480 * exit magnification mode or pan the viewport when a context change
4481 * occurs. For example, on staring a new activity or rotating the screen,
4482 * the system may zoom out so the user can see the new context he is in.
4483 * Another example is on showing a window that is not visible in the
4484 * magnified viewport the system may pan the viewport to make the window
4485 * the has popped up so the user knows that the context has changed.
4486 * Whether a screen magnification is performed is controlled by
4487 * {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED}
4488 *
4489 * @hide
4490 */
4491 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE =
4492 "accessibility_display_magnification_auto_update";
4493
4494 /**
Alan Viveretteef793802013-07-23 14:15:28 -07004495 * Setting that specifies whether timed text (captions) should be
4496 * displayed in video content. Text display properties are controlled by
4497 * the following settings:
4498 * <ul>
4499 * <li>{@link #ACCESSIBILITY_CAPTIONING_LOCALE}
4500 * <li>{@link #ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR}
4501 * <li>{@link #ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR}
4502 * <li>{@link #ACCESSIBILITY_CAPTIONING_EDGE_COLOR}
4503 * <li>{@link #ACCESSIBILITY_CAPTIONING_EDGE_TYPE}
4504 * <li>{@link #ACCESSIBILITY_CAPTIONING_TYPEFACE}
Alan Viverette69ce69b2013-08-29 12:23:48 -07004505 * <li>{@link #ACCESSIBILITY_CAPTIONING_FONT_SCALE}
Alan Viveretteef793802013-07-23 14:15:28 -07004506 * </ul>
4507 *
4508 * @hide
4509 */
4510 public static final String ACCESSIBILITY_CAPTIONING_ENABLED =
4511 "accessibility_captioning_enabled";
4512
4513 /**
4514 * Setting that specifies the language for captions as a locale string,
4515 * e.g. en_US.
4516 *
4517 * @see java.util.Locale#toString
4518 * @hide
4519 */
4520 public static final String ACCESSIBILITY_CAPTIONING_LOCALE =
4521 "accessibility_captioning_locale";
4522
4523 /**
Alan Viverette43a1e3d2013-08-02 16:45:03 -07004524 * Integer property that specifies the preset style for captions, one
4525 * of:
4526 * <ul>
Alan Viverette69ce69b2013-08-29 12:23:48 -07004527 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#PRESET_CUSTOM}
4528 * <li>a valid index of {@link android.view.accessibility.CaptioningManager.CaptionStyle#PRESETS}
Alan Viverette43a1e3d2013-08-02 16:45:03 -07004529 * </ul>
4530 *
4531 * @see java.util.Locale#toString
4532 * @hide
4533 */
4534 public static final String ACCESSIBILITY_CAPTIONING_PRESET =
4535 "accessibility_captioning_preset";
4536
4537 /**
Alan Viveretteef793802013-07-23 14:15:28 -07004538 * Integer property that specifes the background color for captions as a
4539 * packed 32-bit color.
4540 *
4541 * @see android.graphics.Color#argb
4542 * @hide
4543 */
4544 public static final String ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR =
4545 "accessibility_captioning_background_color";
4546
4547 /**
4548 * Integer property that specifes the foreground color for captions as a
4549 * packed 32-bit color.
4550 *
4551 * @see android.graphics.Color#argb
4552 * @hide
4553 */
4554 public static final String ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR =
4555 "accessibility_captioning_foreground_color";
4556
4557 /**
4558 * Integer property that specifes the edge type for captions, one of:
4559 * <ul>
Alan Viverette69ce69b2013-08-29 12:23:48 -07004560 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_NONE}
4561 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_OUTLINE}
4562 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_DROP_SHADOW}
Alan Viveretteef793802013-07-23 14:15:28 -07004563 * </ul>
4564 *
4565 * @see #ACCESSIBILITY_CAPTIONING_EDGE_COLOR
4566 * @hide
4567 */
4568 public static final String ACCESSIBILITY_CAPTIONING_EDGE_TYPE =
4569 "accessibility_captioning_edge_type";
4570
4571 /**
4572 * Integer property that specifes the edge color for captions as a
4573 * packed 32-bit color.
4574 *
4575 * @see #ACCESSIBILITY_CAPTIONING_EDGE_TYPE
4576 * @see android.graphics.Color#argb
4577 * @hide
4578 */
4579 public static final String ACCESSIBILITY_CAPTIONING_EDGE_COLOR =
4580 "accessibility_captioning_edge_color";
4581
4582 /**
Alan Viverette55d70622013-12-11 15:22:14 -08004583 * Integer property that specifes the window color for captions as a
4584 * packed 32-bit color.
4585 *
4586 * @see android.graphics.Color#argb
4587 * @hide
4588 */
4589 public static final String ACCESSIBILITY_CAPTIONING_WINDOW_COLOR =
4590 "accessibility_captioning_window_color";
4591
4592 /**
Alan Viveretteef793802013-07-23 14:15:28 -07004593 * String property that specifies the typeface for captions, one of:
4594 * <ul>
4595 * <li>DEFAULT
4596 * <li>MONOSPACE
4597 * <li>SANS_SERIF
4598 * <li>SERIF
4599 * </ul>
4600 *
4601 * @see android.graphics.Typeface
4602 * @hide
4603 */
4604 public static final String ACCESSIBILITY_CAPTIONING_TYPEFACE =
4605 "accessibility_captioning_typeface";
4606
4607 /**
Alan Viverette69ce69b2013-08-29 12:23:48 -07004608 * Floating point property that specifies font scaling for captions.
Alan Viveretteef793802013-07-23 14:15:28 -07004609 *
4610 * @hide
4611 */
Alan Viverette69ce69b2013-08-29 12:23:48 -07004612 public static final String ACCESSIBILITY_CAPTIONING_FONT_SCALE =
4613 "accessibility_captioning_font_scale";
Alan Viveretteef793802013-07-23 14:15:28 -07004614
4615 /**
Alan Viverette410d4e32013-09-30 15:37:38 -07004616 * Setting that specifies whether display color inversion is enabled.
Alan Viverette410d4e32013-09-30 15:37:38 -07004617 */
4618 public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED =
4619 "accessibility_display_inversion_enabled";
4620
4621 /**
Alan Viverette410d4e32013-09-30 15:37:38 -07004622 * Setting that specifies whether display color space adjustment is
4623 * enabled.
4624 *
4625 * @hide
4626 */
4627 public static final String ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED =
4628 "accessibility_display_daltonizer_enabled";
4629
4630 /**
4631 * Integer property that specifies the type of color space adjustment to
4632 * perform. Valid values are defined in AccessibilityManager.
4633 *
4634 * @hide
4635 */
4636 public static final String ACCESSIBILITY_DISPLAY_DALTONIZER =
4637 "accessibility_display_daltonizer";
4638
4639 /**
Svetoslav Ganov54d068e2011-03-02 12:58:40 -08004640 * The timout for considering a press to be a long press in milliseconds.
4641 * @hide
4642 */
4643 public static final String LONG_PRESS_TIMEOUT = "long_press_timeout";
4644
4645 /**
Svetoslav Ganov6bd20bc2013-09-02 15:24:45 -07004646 * List of the enabled print services.
Svetoslav Ganov4b9a4d12013-06-11 15:20:06 -07004647 * @hide
4648 */
4649 public static final String ENABLED_PRINT_SERVICES =
4650 "enabled_print_services";
4651
4652 /**
Svetoslav Ganov6bd20bc2013-09-02 15:24:45 -07004653 * List of the system print services we enabled on first boot. On
4654 * first boot we enable all system, i.e. bundled print services,
4655 * once, so they work out-of-the-box.
4656 * @hide
4657 */
4658 public static final String ENABLED_ON_FIRST_BOOT_SYSTEM_PRINT_SERVICES =
4659 "enabled_on_first_boot_system_print_services";
4660
4661 /**
Jean-Michel Trivif62ba452009-06-04 14:55:24 -07004662 * Setting to always use the default text-to-speech settings regardless
4663 * of the application settings.
4664 * 1 = override application settings,
4665 * 0 = use application settings (if specified).
Narayan Kamath6d632962011-08-24 11:51:37 +01004666 *
4667 * @deprecated The value of this setting is no longer respected by
4668 * the framework text to speech APIs as of the Ice Cream Sandwich release.
Jean-Michel Trivif62ba452009-06-04 14:55:24 -07004669 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004670 @Deprecated
Jean-Michel Trivif62ba452009-06-04 14:55:24 -07004671 public static final String TTS_USE_DEFAULTS = "tts_use_defaults";
4672
4673 /**
4674 * Default text-to-speech engine speech rate. 100 = 1x
4675 */
4676 public static final String TTS_DEFAULT_RATE = "tts_default_rate";
4677
4678 /**
4679 * Default text-to-speech engine pitch. 100 = 1x
4680 */
4681 public static final String TTS_DEFAULT_PITCH = "tts_default_pitch";
4682
4683 /**
4684 * Default text-to-speech engine.
4685 */
4686 public static final String TTS_DEFAULT_SYNTH = "tts_default_synth";
4687
4688 /**
Jean-Michel Trivif4782672009-06-09 16:22:48 -07004689 * Default text-to-speech language.
Narayan Kamath6d632962011-08-24 11:51:37 +01004690 *
4691 * @deprecated this setting is no longer in use, as of the Ice Cream
4692 * Sandwich release. Apps should never need to read this setting directly,
4693 * instead can query the TextToSpeech framework classes for the default
4694 * locale. {@link TextToSpeech#getLanguage()}.
Jean-Michel Trivif4782672009-06-09 16:22:48 -07004695 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004696 @Deprecated
Jean-Michel Trivif4782672009-06-09 16:22:48 -07004697 public static final String TTS_DEFAULT_LANG = "tts_default_lang";
4698
4699 /**
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004700 * Default text-to-speech country.
Narayan Kamath6d632962011-08-24 11:51:37 +01004701 *
4702 * @deprecated this setting is no longer in use, as of the Ice Cream
4703 * Sandwich release. Apps should never need to read this setting directly,
4704 * instead can query the TextToSpeech framework classes for the default
4705 * locale. {@link TextToSpeech#getLanguage()}.
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004706 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004707 @Deprecated
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004708 public static final String TTS_DEFAULT_COUNTRY = "tts_default_country";
4709
4710 /**
4711 * Default text-to-speech locale variant.
Narayan Kamath6d632962011-08-24 11:51:37 +01004712 *
4713 * @deprecated this setting is no longer in use, as of the Ice Cream
4714 * Sandwich release. Apps should never need to read this setting directly,
4715 * instead can query the TextToSpeech framework classes for the
4716 * locale that is in use {@link TextToSpeech#getLanguage()}.
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004717 */
Narayan Kamath6d632962011-08-24 11:51:37 +01004718 @Deprecated
Jean-Michel Trivia6fcc952009-06-19 14:06:01 -07004719 public static final String TTS_DEFAULT_VARIANT = "tts_default_variant";
4720
4721 /**
Narayan Kamathe5b8c4d2011-08-22 15:37:47 +01004722 * Stores the default tts locales on a per engine basis. Stored as
4723 * a comma seperated list of values, each value being of the form
4724 * {@code engine_name:locale} for example,
Narayan Kamath6d632962011-08-24 11:51:37 +01004725 * {@code com.foo.ttsengine:eng-USA,com.bar.ttsengine:esp-ESP}. This
4726 * supersedes {@link #TTS_DEFAULT_LANG}, {@link #TTS_DEFAULT_COUNTRY} and
4727 * {@link #TTS_DEFAULT_VARIANT}. Apps should never need to read this
4728 * setting directly, and can query the TextToSpeech framework classes
4729 * for the locale that is in use.
Narayan Kamathe5b8c4d2011-08-22 15:37:47 +01004730 *
4731 * @hide
4732 */
4733 public static final String TTS_DEFAULT_LOCALE = "tts_default_locale";
4734
4735 /**
Charles Chenceffa152010-03-16 21:18:10 -07004736 * Space delimited list of plugin packages that are enabled.
4737 */
4738 public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
4739
4740 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004741 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON}
4742 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004743 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004744 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004745 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004746 Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004747
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004748 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004749 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY}
4750 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004751 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004752 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004753 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY =
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004754 Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004755
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004756 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004757 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT}
4758 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004759 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004760 @Deprecated
4761 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT =
4762 Global.WIFI_NUM_OPEN_NETWORKS_KEPT;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004763
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004764 /**
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004765 * @deprecated Use {@link android.provider.Settings.Global#WIFI_ON}
4766 * instead.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004767 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004768 @Deprecated
4769 public static final String WIFI_ON = Global.WIFI_ON;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004770
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004771 /**
4772 * The acceptable packet loss percentage (range 0 - 100) before trying
4773 * another AP on the same network.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004774 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004775 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004776 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004777 public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE =
4778 "wifi_watchdog_acceptable_packet_loss_percentage";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004779
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004780 /**
4781 * The number of access points required for a network in order for the
4782 * watchdog to monitor it.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004783 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004784 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004785 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004786 public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004787
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004788 /**
4789 * The delay between background checks.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004790 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004791 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004792 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004793 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS =
4794 "wifi_watchdog_background_check_delay_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004795
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004796 /**
4797 * Whether the Wi-Fi watchdog is enabled for background checking even
4798 * after it thinks the user has connected to a good access point.
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_BACKGROUND_CHECK_ENABLED =
4803 "wifi_watchdog_background_check_enabled";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004804
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004805 /**
4806 * The timeout for a background ping
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004807 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004808 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004809 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004810 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS =
4811 "wifi_watchdog_background_check_timeout_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004812
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004813 /**
4814 * The number of initial pings to perform that *may* be ignored if they
4815 * fail. Again, if these fail, they will *not* be used in packet loss
4816 * calculation. For example, one network always seemed to time out for
4817 * the first couple pings, so this is set to 3 by default.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004818 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004819 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004820 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004821 public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT =
4822 "wifi_watchdog_initial_ignored_ping_count";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004823
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004824 /**
4825 * The maximum number of access points (per network) to attempt to test.
4826 * If this number is reached, the watchdog will no longer monitor the
4827 * initial connection state for the network. This is a safeguard for
4828 * networks containing multiple APs whose DNS does not respond to pings.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004829 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004830 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004831 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004832 public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004833
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004834 /**
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004835 * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004836 */
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004837 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004838 public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
4839
4840 /**
4841 * A comma-separated list of SSIDs for which the Wi-Fi watchdog should be enabled.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004842 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004843 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004844 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004845 public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
4846
4847 /**
4848 * The number of pings to test if an access point is a good connection.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004849 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004850 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004851 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004852 public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004853
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004854 /**
4855 * The delay between pings.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004856 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004857 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004858 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004859 public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004860
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004861 /**
4862 * The timeout per ping.
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004863 * @deprecated This setting is not used.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004864 */
Isaac Levyd7b3e6a2011-07-20 18:15:30 -07004865 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004866 public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004867
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004868 /**
Christopher Tate06efb532012-08-24 15:29:27 -07004869 * @deprecated Use
4870 * {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004871 */
Christopher Tate06efb532012-08-24 15:29:27 -07004872 @Deprecated
4873 public static final String WIFI_MAX_DHCP_RETRY_COUNT = Global.WIFI_MAX_DHCP_RETRY_COUNT;
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07004874
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004875 /**
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004876 * @deprecated Use
4877 * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004878 */
Jeff Sharkeybdfce2e2012-09-26 15:54:06 -07004879 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004880 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004881 Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004882
4883 /**
Jeremy Joslin79294842014-12-03 17:15:28 -08004884 * The number of milliseconds to hold on to a PendingIntent based request. This delay gives
4885 * the receivers of the PendingIntent an opportunity to make a new network request before
4886 * the Network satisfying the request is potentially removed.
4887 *
4888 * @hide
4889 */
4890 public static final String CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS =
4891 "connectivity_release_pending_intent_delay_ms";
4892
4893 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07004894 * Whether background data usage is allowed.
4895 *
4896 * @deprecated As of {@link VERSION_CODES#ICE_CREAM_SANDWICH},
4897 * availability of background data depends on several
4898 * combined factors. When background data is unavailable,
4899 * {@link ConnectivityManager#getActiveNetworkInfo()} will
4900 * now appear disconnected.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004901 */
Jeff Sharkey3a844fc2011-08-16 14:37:57 -07004902 @Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004903 public static final String BACKGROUND_DATA = "background_data";
Wink Saville04e71b32009-04-02 11:00:54 -07004904
4905 /**
Bjorn Bringert98bfa392010-03-24 10:59:48 +00004906 * Origins for which browsers should allow geolocation by default.
4907 * The value is a space-separated list of origins.
4908 */
4909 public static final String ALLOWED_GEOLOCATION_ORIGINS
4910 = "allowed_geolocation_origins";
4911
4912 /**
Wink Savillee9b06d72009-05-18 21:47:50 -07004913 * The preferred TTY mode 0 = TTy Off, CDMA default
4914 * 1 = TTY Full
4915 * 2 = TTY HCO
4916 * 3 = TTY VCO
4917 * @hide
4918 */
4919 public static final String PREFERRED_TTY_MODE =
4920 "preferred_tty_mode";
4921
Wink Saville04e71b32009-04-02 11:00:54 -07004922 /**
Wink Saville04e71b32009-04-02 11:00:54 -07004923 * Whether the enhanced voice privacy mode is enabled.
4924 * 0 = normal voice privacy
4925 * 1 = enhanced voice privacy
4926 * @hide
4927 */
4928 public static final String ENHANCED_VOICE_PRIVACY_ENABLED = "enhanced_voice_privacy_enabled";
4929
4930 /**
4931 * Whether the TTY mode mode is enabled.
4932 * 0 = disabled
4933 * 1 = enabled
4934 * @hide
4935 */
4936 public static final String TTY_MODE_ENABLED = "tty_mode_enabled";
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07004937
4938 /**
Christopher Tate8031a3d2009-07-06 16:36:05 -07004939 * Controls whether settings backup is enabled.
Dianne Hackborncf098292009-07-01 19:55:20 -07004940 * Type: int ( 0 = disabled, 1 = enabled )
4941 * @hide
4942 */
4943 public static final String BACKUP_ENABLED = "backup_enabled";
4944
4945 /**
Christopher Tatecce9da52010-02-03 15:11:15 -08004946 * Controls whether application data is automatically restored from backup
4947 * at install time.
4948 * Type: int ( 0 = disabled, 1 = enabled )
4949 * @hide
4950 */
4951 public static final String BACKUP_AUTO_RESTORE = "backup_auto_restore";
4952
4953 /**
Christopher Tate8031a3d2009-07-06 16:36:05 -07004954 * Indicates whether settings backup has been fully provisioned.
4955 * Type: int ( 0 = unprovisioned, 1 = fully provisioned )
4956 * @hide
4957 */
4958 public static final String BACKUP_PROVISIONED = "backup_provisioned";
4959
4960 /**
Dianne Hackborncf098292009-07-01 19:55:20 -07004961 * Component of the transport to use for backup/restore.
4962 * @hide
4963 */
4964 public static final String BACKUP_TRANSPORT = "backup_transport";
Sanjay Jeyakumar21bf2412009-07-09 13:31:48 -07004965
Dianne Hackbornd7cd29d2009-07-01 11:22:45 -07004966 /**
4967 * Version for which the setup wizard was last shown. Bumped for
4968 * each release when there is new setup information to show.
4969 * @hide
4970 */
4971 public static final String LAST_SETUP_SHOWN = "last_setup_shown";
Dianne Hackborncf098292009-07-01 19:55:20 -07004972
4973 /**
Doug Zongker43866e02010-01-07 12:09:54 -08004974 * The interval in milliseconds after which Wi-Fi is considered idle.
4975 * When idle, it is possible for the device to be switched from Wi-Fi to
4976 * the mobile data network.
4977 * @hide
Jeff Brownbf6f6f92012-09-25 15:03:20 -07004978 * @deprecated Use {@link android.provider.Settings.Global#WIFI_IDLE_MS}
4979 * instead.
Doug Zongker43866e02010-01-07 12:09:54 -08004980 */
Christopher Tate6f5a9a92012-09-14 17:24:28 -07004981 @Deprecated
4982 public static final String WIFI_IDLE_MS = Global.WIFI_IDLE_MS;
Doug Zongker43866e02010-01-07 12:09:54 -08004983
4984 /**
Narayan Kamathee69ff42011-06-28 12:07:18 +01004985 * The global search provider chosen by the user (if multiple global
4986 * search providers are installed). This will be the provider returned
4987 * by {@link SearchManager#getGlobalSearchActivity()} if it's still
4988 * installed. This setting is stored as a flattened component name as
4989 * per {@link ComponentName#flattenToString()}.
4990 *
4991 * @hide
4992 */
4993 public static final String SEARCH_GLOBAL_SEARCH_ACTIVITY =
4994 "search_global_search_activity";
4995
4996 /**
Doug Zongkeraed8f8e2010-01-07 18:07:50 -08004997 * The number of promoted sources in GlobalSearch.
4998 * @hide
4999 */
5000 public static final String SEARCH_NUM_PROMOTED_SOURCES = "search_num_promoted_sources";
5001 /**
5002 * The maximum number of suggestions returned by GlobalSearch.
5003 * @hide
5004 */
5005 public static final String SEARCH_MAX_RESULTS_TO_DISPLAY = "search_max_results_to_display";
5006 /**
5007 * The number of suggestions GlobalSearch will ask each non-web search source for.
5008 * @hide
5009 */
5010 public static final String SEARCH_MAX_RESULTS_PER_SOURCE = "search_max_results_per_source";
5011 /**
5012 * The number of suggestions the GlobalSearch will ask the web search source for.
5013 * @hide
5014 */
5015 public static final String SEARCH_WEB_RESULTS_OVERRIDE_LIMIT =
5016 "search_web_results_override_limit";
5017 /**
5018 * The number of milliseconds that GlobalSearch will wait for suggestions from
5019 * promoted sources before continuing with all other sources.
5020 * @hide
5021 */
5022 public static final String SEARCH_PROMOTED_SOURCE_DEADLINE_MILLIS =
5023 "search_promoted_source_deadline_millis";
5024 /**
5025 * The number of milliseconds before GlobalSearch aborts search suggesiton queries.
5026 * @hide
5027 */
5028 public static final String SEARCH_SOURCE_TIMEOUT_MILLIS = "search_source_timeout_millis";
5029 /**
5030 * The maximum number of milliseconds that GlobalSearch shows the previous results
5031 * after receiving a new query.
5032 * @hide
5033 */
5034 public static final String SEARCH_PREFILL_MILLIS = "search_prefill_millis";
5035 /**
5036 * The maximum age of log data used for shortcuts in GlobalSearch.
5037 * @hide
5038 */
5039 public static final String SEARCH_MAX_STAT_AGE_MILLIS = "search_max_stat_age_millis";
5040 /**
5041 * The maximum age of log data used for source ranking in GlobalSearch.
5042 * @hide
5043 */
5044 public static final String SEARCH_MAX_SOURCE_EVENT_AGE_MILLIS =
5045 "search_max_source_event_age_millis";
5046 /**
5047 * The minimum number of impressions needed to rank a source in GlobalSearch.
5048 * @hide
5049 */
5050 public static final String SEARCH_MIN_IMPRESSIONS_FOR_SOURCE_RANKING =
5051 "search_min_impressions_for_source_ranking";
5052 /**
5053 * The minimum number of clicks needed to rank a source in GlobalSearch.
5054 * @hide
5055 */
5056 public static final String SEARCH_MIN_CLICKS_FOR_SOURCE_RANKING =
5057 "search_min_clicks_for_source_ranking";
5058 /**
5059 * The maximum number of shortcuts shown by GlobalSearch.
5060 * @hide
5061 */
5062 public static final String SEARCH_MAX_SHORTCUTS_RETURNED = "search_max_shortcuts_returned";
5063 /**
5064 * The size of the core thread pool for suggestion queries in GlobalSearch.
5065 * @hide
5066 */
5067 public static final String SEARCH_QUERY_THREAD_CORE_POOL_SIZE =
5068 "search_query_thread_core_pool_size";
5069 /**
5070 * The maximum size of the thread pool for suggestion queries in GlobalSearch.
5071 * @hide
5072 */
5073 public static final String SEARCH_QUERY_THREAD_MAX_POOL_SIZE =
5074 "search_query_thread_max_pool_size";
5075 /**
5076 * The size of the core thread pool for shortcut refreshing in GlobalSearch.
5077 * @hide
5078 */
5079 public static final String SEARCH_SHORTCUT_REFRESH_CORE_POOL_SIZE =
5080 "search_shortcut_refresh_core_pool_size";
5081 /**
5082 * The maximum size of the thread pool for shortcut refreshing in GlobalSearch.
5083 * @hide
5084 */
5085 public static final String SEARCH_SHORTCUT_REFRESH_MAX_POOL_SIZE =
5086 "search_shortcut_refresh_max_pool_size";
5087 /**
5088 * The maximun time that excess threads in the GlobalSeach thread pools will
5089 * wait before terminating.
5090 * @hide
5091 */
5092 public static final String SEARCH_THREAD_KEEPALIVE_SECONDS =
5093 "search_thread_keepalive_seconds";
5094 /**
5095 * The maximum number of concurrent suggestion queries to each source.
5096 * @hide
5097 */
5098 public static final String SEARCH_PER_SOURCE_CONCURRENT_QUERY_LIMIT =
5099 "search_per_source_concurrent_query_limit";
5100
San Mehat87734d32010-01-08 12:53:06 -08005101 /**
5102 * Whether or not alert sounds are played on MountService events. (0 = false, 1 = true)
5103 * @hide
5104 */
5105 public static final String MOUNT_PLAY_NOTIFICATION_SND = "mount_play_not_snd";
5106
5107 /**
5108 * Whether or not UMS auto-starts on UMS host detection. (0 = false, 1 = true)
5109 * @hide
5110 */
5111 public static final String MOUNT_UMS_AUTOSTART = "mount_ums_autostart";
5112
5113 /**
5114 * Whether or not a notification is displayed on UMS host detection. (0 = false, 1 = true)
5115 * @hide
5116 */
5117 public static final String MOUNT_UMS_PROMPT = "mount_ums_prompt";
5118
5119 /**
5120 * Whether or not a notification is displayed while UMS is enabled. (0 = false, 1 = true)
5121 * @hide
5122 */
5123 public static final String MOUNT_UMS_NOTIFY_ENABLED = "mount_ums_notify_enabled";
Doug Zongkeraed8f8e2010-01-07 18:07:50 -08005124
Dan Egnor42471dd2010-01-07 17:25:22 -08005125 /**
5126 * If nonzero, ANRs in invisible background processes bring up a dialog.
5127 * Otherwise, the process will be silently killed.
5128 * @hide
5129 */
5130 public static final String ANR_SHOW_BACKGROUND = "anr_show_background";
Erikeebc8e22010-02-18 13:27:19 -08005131
Mike LeBeau5d34e9b2010-02-10 19:34:56 -08005132 /**
5133 * The {@link ComponentName} string of the service to be used as the voice recognition
5134 * service.
Erikeebc8e22010-02-18 13:27:19 -08005135 *
Mike LeBeau5d34e9b2010-02-10 19:34:56 -08005136 * @hide
5137 */
5138 public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";
Dan Egnor42471dd2010-01-07 17:25:22 -08005139
William Luh623a4282013-06-24 12:14:18 -07005140 /**
5141 * Stores whether an user has consented to have apps verified through PAM.
5142 * The value is boolean (1 or 0).
5143 *
5144 * @hide
5145 */
5146 public static final String PACKAGE_VERIFIER_USER_CONSENT =
5147 "package_verifier_user_consent";
satok988323c2011-06-22 16:38:13 +09005148
5149 /**
satokada8c4e2011-08-23 14:56:56 +09005150 * The {@link ComponentName} string of the selected spell checker service which is
5151 * one of the services managed by the text service manager.
5152 *
5153 * @hide
5154 */
5155 public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker";
5156
5157 /**
5158 * The {@link ComponentName} string of the selected subtype of the selected spell checker
satok988323c2011-06-22 16:38:13 +09005159 * service which is one of the services managed by the text service manager.
5160 *
5161 * @hide
5162 */
satokada8c4e2011-08-23 14:56:56 +09005163 public static final String SELECTED_SPELL_CHECKER_SUBTYPE =
5164 "selected_spell_checker_subtype";
satok988323c2011-06-22 16:38:13 +09005165
Doug Zongkeraed8f8e2010-01-07 18:07:50 -08005166 /**
satoka33c4fc2011-08-25 16:50:11 +09005167 * The {@link ComponentName} string whether spell checker is enabled or not.
5168 *
5169 * @hide
5170 */
5171 public static final String SPELL_CHECKER_ENABLED = "spell_checker_enabled";
5172
5173 /**
David Brown458e8062010-03-08 21:52:11 -08005174 * What happens when the user presses the Power button while in-call
5175 * and the screen is on.<br/>
5176 * <b>Values:</b><br/>
5177 * 1 - The Power button turns off the screen and locks the device. (Default behavior)<br/>
5178 * 2 - The Power button hangs up the current call.<br/>
5179 *
5180 * @hide
5181 */
5182 public static final String INCALL_POWER_BUTTON_BEHAVIOR = "incall_power_button_behavior";
5183
5184 /**
5185 * INCALL_POWER_BUTTON_BEHAVIOR value for "turn off screen".
5186 * @hide
5187 */
5188 public static final int INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF = 0x1;
5189
5190 /**
5191 * INCALL_POWER_BUTTON_BEHAVIOR value for "hang up".
5192 * @hide
5193 */
5194 public static final int INCALL_POWER_BUTTON_BEHAVIOR_HANGUP = 0x2;
5195
5196 /**
5197 * INCALL_POWER_BUTTON_BEHAVIOR default value.
5198 * @hide
5199 */
5200 public static final int INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT =
5201 INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF;
5202
5203 /**
Jeff Browna20dda42014-05-27 20:57:24 -07005204 * Whether the device should wake when the wake gesture sensor detects motion.
5205 * @hide
5206 */
5207 public static final String WAKE_GESTURE_ENABLED = "wake_gesture_enabled";
5208
5209 /**
John Spurlocka4215ce2014-08-04 14:50:38 -04005210 * Whether the device should doze if configured.
5211 * @hide
5212 */
5213 public static final String DOZE_ENABLED = "doze_enabled";
5214
5215 /**
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07005216 * The current night mode that has been selected by the user. Owned
5217 * and controlled by UiModeManagerService. Constants are as per
5218 * UiModeManager.
5219 * @hide
5220 */
5221 public static final String UI_NIGHT_MODE = "ui_night_mode";
Suchi Amalapurapu40e47252010-04-07 16:15:50 -07005222
5223 /**
John Spurlock1a868b72012-08-22 09:56:51 -04005224 * Whether screensavers are enabled.
Daniel Sandler0601eb72011-04-13 01:01:32 -04005225 * @hide
5226 */
Daniel Sandler2d545362011-11-17 10:38:37 -08005227 public static final String SCREENSAVER_ENABLED = "screensaver_enabled";
Daniel Sandler0601eb72011-04-13 01:01:32 -04005228
5229 /**
John Spurlock1a868b72012-08-22 09:56:51 -04005230 * The user's chosen screensaver components.
Daniel Sandler2d545362011-11-17 10:38:37 -08005231 *
John Spurlock1a868b72012-08-22 09:56:51 -04005232 * These will be launched by the PhoneWindowManager after a timeout when not on
Daniel Sandler2d545362011-11-17 10:38:37 -08005233 * battery, or upon dock insertion (if SCREENSAVER_ACTIVATE_ON_DOCK is set to 1).
Daniel Sandler0601eb72011-04-13 01:01:32 -04005234 * @hide
5235 */
John Spurlock1a868b72012-08-22 09:56:51 -04005236 public static final String SCREENSAVER_COMPONENTS = "screensaver_components";
Daniel Sandler2d545362011-11-17 10:38:37 -08005237
5238 /**
John Spurlock1a868b72012-08-22 09:56:51 -04005239 * If screensavers are enabled, whether the screensaver should be automatically launched
5240 * when the device is inserted into a (desk) dock.
Daniel Sandler2d545362011-11-17 10:38:37 -08005241 * @hide
5242 */
5243 public static final String SCREENSAVER_ACTIVATE_ON_DOCK = "screensaver_activate_on_dock";
Daniel Sandler0601eb72011-04-13 01:01:32 -04005244
John Spurlock1a868b72012-08-22 09:56:51 -04005245 /**
5246 * If screensavers are enabled, whether the screensaver should be automatically launched
5247 * when the screen times out when not on battery.
5248 * @hide
5249 */
5250 public static final String SCREENSAVER_ACTIVATE_ON_SLEEP = "screensaver_activate_on_sleep";
5251
5252 /**
5253 * If screensavers are enabled, the default screensaver component.
5254 * @hide
5255 */
5256 public static final String SCREENSAVER_DEFAULT_COMPONENT = "screensaver_default_component";
5257
Daniel Sandler0601eb72011-04-13 01:01:32 -04005258 /**
Martijn Coenena7397882013-07-30 20:07:47 -07005259 * The default NFC payment component
5260 * @hide
5261 */
5262 public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component";
5263
5264 /**
Martijn Coenen2f6f3a012014-04-25 17:00:21 -07005265 * Whether NFC payment is handled by the foreground application or a default.
5266 * @hide
5267 */
5268 public static final String NFC_PAYMENT_FOREGROUND = "nfc_payment_foreground";
5269
5270 /**
David Braunf5d83192013-09-16 13:43:51 -07005271 * Specifies the package name currently configured to be the primary sms application
5272 * @hide
5273 */
5274 public static final String SMS_DEFAULT_APPLICATION = "sms_default_application";
5275
5276 /**
Chris Wren8326a8a2014-10-22 14:13:32 -04005277 * Names of the packages that the current user has explicitly allowed to
5278 * see all of the user's notifications, separated by ':'.
Daniel Sandler4b749ef2013-03-18 21:53:04 -04005279 *
5280 * @hide
5281 */
5282 public static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners";
5283
John Spurlock7340fc82014-04-24 18:50:12 -04005284 /**
5285 * @hide
5286 */
5287 public static final String ENABLED_CONDITION_PROVIDERS = "enabled_condition_providers";
5288
John Spurlock5c454122013-06-17 07:35:46 -04005289 /** @hide */
5290 public static final String BAR_SERVICE_COMPONENT = "bar_service_component";
5291
John Spurlockd67ec252013-09-05 11:31:54 -04005292 /** @hide */
John Spurlockf1a36642013-10-12 17:50:42 -04005293 public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations";
John Spurlockd67ec252013-09-05 11:31:54 -04005294
Yorke Lee647f8f32013-05-07 10:49:44 -07005295 /**
Svetoslavf43e8512013-09-30 17:33:05 -07005296 * This is the query URI for finding a print service to install.
5297 *
5298 * @hide
5299 */
5300 public static final String PRINT_SERVICE_SEARCH_URI = "print_service_search_uri";
5301
5302 /**
5303 * This is the query URI for finding a NFC payment service to install.
5304 *
5305 * @hide
5306 */
5307 public static final String PAYMENT_SERVICE_SEARCH_URI = "payment_service_search_uri";
5308
5309 /**
Amith Yamasani1e9c2182014-06-11 17:25:51 -07005310 * If enabled, apps should try to skip any introductory hints on first launch. This might
Amith Yamasani0c416392014-06-13 15:54:39 -07005311 * apply to users that are already familiar with the environment or temporary users.
Amith Yamasani1e9c2182014-06-11 17:25:51 -07005312 * <p>
5313 * Type : int (0 to show hints, 1 to skip showing hints)
Amith Yamasani1e9c2182014-06-11 17:25:51 -07005314 */
5315 public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
5316
5317 /**
John Spurlockaa5ee4d2014-07-25 13:05:12 -04005318 * Persisted playback time after a user confirmation of an unsafe volume level.
5319 *
5320 * @hide
5321 */
5322 public static final String UNSAFE_VOLUME_MUSIC_ACTIVE_MS = "unsafe_volume_music_active_ms";
5323
5324 /**
Dan Sandler52e5701e2014-07-22 23:14:54 -04005325 * This preference enables notification display on the lockscreen.
5326 * @hide
5327 */
5328 public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS =
5329 "lock_screen_show_notifications";
5330
5331 /**
Dongwon Kang4d933a02014-08-07 22:51:47 -07005332 * List of TV inputs that are currently hidden. This is a string
Jaewan Kimf0e530e2014-08-22 00:43:31 +09005333 * containing the IDs of all hidden TV inputs. Each ID is encoded by
5334 * {@link android.net.Uri#encode(String)} and separated by ':'.
Dongwon Kang4d933a02014-08-07 22:51:47 -07005335 * @hide
5336 */
5337 public static final String TV_INPUT_HIDDEN_INPUTS = "tv_input_hidden_inputs";
5338
5339 /**
5340 * List of custom TV input labels. This is a string containing <TV input id, custom name>
Jaewan Kimf0e530e2014-08-22 00:43:31 +09005341 * pairs. TV input id and custom name are encoded by {@link android.net.Uri#encode(String)}
5342 * and separated by ','. Each pair is separated by ':'.
Dongwon Kang4d933a02014-08-07 22:51:47 -07005343 * @hide
5344 */
5345 public static final String TV_INPUT_CUSTOM_LABELS = "tv_input_custom_labels";
5346
5347 /**
Glenn Kasten34cc4db2014-08-13 10:56:38 -07005348 * Whether automatic routing of system audio to USB audio peripheral is disabled.
5349 * The value is boolean (1 or 0), where 1 means automatic routing is disabled,
5350 * and 0 means automatic routing is enabled.
5351 *
5352 * @hide
5353 */
5354 public static final String USB_AUDIO_AUTOMATIC_ROUTING_DISABLED =
5355 "usb_audio_automatic_routing_disabled";
5356
5357 /**
Jeff Brown05af6ad2014-09-30 20:54:30 -07005358 * The timeout in milliseconds before the device fully goes to sleep after
5359 * a period of inactivity. This value sets an upper bound on how long the device
5360 * will stay awake or dreaming without user activity. It should generally
Dianne Hackbornad6a99b2014-11-18 10:11:10 -08005361 * be longer than {@link Settings.System#SCREEN_OFF_TIMEOUT} as otherwise the device
Jeff Brown05af6ad2014-09-30 20:54:30 -07005362 * will sleep before it ever has a chance to dream.
5363 * <p>
5364 * Use -1 to disable this timeout.
5365 * </p>
5366 *
5367 * @hide
5368 */
5369 public static final String SLEEP_TIMEOUT = "sleep_timeout";
5370
5371 /**
Svetoslav Ganova571a582011-09-20 18:32:20 -07005372 * This are the settings to be backed up.
5373 *
5374 * NOTE: Settings are backed up and restored in the order they appear
5375 * in this array. If you have one setting depending on another,
5376 * make sure that they are ordered appropriately.
5377 *
-b master501eec92009-07-06 13:53:11 -07005378 * @hide
5379 */
5380 public static final String[] SETTINGS_TO_BACKUP = {
Christopher Tate58f41ec2013-01-11 15:40:36 -08005381 BUGREPORT_IN_POWER_MENU, // moved to global
Amith Yamasani8823c0a82009-07-07 14:30:17 -07005382 ALLOW_MOCK_LOCATION,
-b master501eec92009-07-06 13:53:11 -07005383 PARENTAL_CONTROL_ENABLED,
5384 PARENTAL_CONTROL_REDIRECT_URL,
Christopher Tate66488d62012-10-02 11:58:01 -07005385 USB_MASS_STORAGE_ENABLED, // moved to global
Svetoslav Ganov1cf70bb2012-08-06 10:53:34 -07005386 ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
5387 ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE,
5388 ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE,
Svetoslav Ganov585f13f8d2010-08-10 07:59:15 -07005389 ACCESSIBILITY_SCRIPT_INJECTION,
Christopher Tate14c2d792010-02-25 16:49:44 -08005390 BACKUP_AUTO_RESTORE,
-b master501eec92009-07-06 13:53:11 -07005391 ENABLED_ACCESSIBILITY_SERVICES,
Svetoslav Ganov9a4c5cd2012-05-30 14:06:32 -07005392 TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
Svetoslav Ganova28a16d2011-07-28 11:24:21 -07005393 TOUCH_EXPLORATION_ENABLED,
Svetoslav Ganova571a582011-09-20 18:32:20 -07005394 ACCESSIBILITY_ENABLED,
Svetoslav Ganov55f937a2011-12-05 11:42:07 -08005395 ACCESSIBILITY_SPEAK_PASSWORD,
Chris Craikcce47eb2014-07-16 15:12:15 -07005396 ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED,
Alan Viveretteef793802013-07-23 14:15:28 -07005397 ACCESSIBILITY_CAPTIONING_ENABLED,
5398 ACCESSIBILITY_CAPTIONING_LOCALE,
5399 ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR,
5400 ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR,
5401 ACCESSIBILITY_CAPTIONING_EDGE_TYPE,
5402 ACCESSIBILITY_CAPTIONING_EDGE_COLOR,
5403 ACCESSIBILITY_CAPTIONING_TYPEFACE,
Alan Viverette69ce69b2013-08-29 12:23:48 -07005404 ACCESSIBILITY_CAPTIONING_FONT_SCALE,
-b master501eec92009-07-06 13:53:11 -07005405 TTS_USE_DEFAULTS,
5406 TTS_DEFAULT_RATE,
5407 TTS_DEFAULT_PITCH,
5408 TTS_DEFAULT_SYNTH,
5409 TTS_DEFAULT_LANG,
5410 TTS_DEFAULT_COUNTRY,
Charles Chenceffa152010-03-16 21:18:10 -07005411 TTS_ENABLED_PLUGINS,
Narayan Kamath6d632962011-08-24 11:51:37 +01005412 TTS_DEFAULT_LOCALE,
Christopher Tate66488d62012-10-02 11:58:01 -07005413 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, // moved to global
5414 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, // moved to global
5415 WIFI_NUM_OPEN_NETWORKS_KEPT, // moved to global
San Mehat87734d32010-01-08 12:53:06 -08005416 MOUNT_PLAY_NOTIFICATION_SND,
5417 MOUNT_UMS_AUTOSTART,
5418 MOUNT_UMS_PROMPT,
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07005419 MOUNT_UMS_NOTIFY_ENABLED,
Jeff Brown05af6ad2014-09-30 20:54:30 -07005420 UI_NIGHT_MODE,
5421 SLEEP_TIMEOUT
-b master501eec92009-07-06 13:53:11 -07005422 };
5423
5424 /**
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07005425 * These entries are considered common between the personal and the managed profile,
5426 * since the managed profile doesn't get to change them.
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07005427 */
Svetoslav683914b2015-01-15 14:22:26 -08005428 private static final Set<String> CLONE_TO_MANAGED_PROFILE = new ArraySet<>();
5429 static {
5430 CLONE_TO_MANAGED_PROFILE.add(ACCESSIBILITY_ENABLED);
5431 CLONE_TO_MANAGED_PROFILE.add(ALLOW_MOCK_LOCATION);
5432 CLONE_TO_MANAGED_PROFILE.add(ALLOWED_GEOLOCATION_ORIGINS);
5433 CLONE_TO_MANAGED_PROFILE.add(DEFAULT_INPUT_METHOD);
5434 CLONE_TO_MANAGED_PROFILE.add(ENABLED_ACCESSIBILITY_SERVICES);
5435 CLONE_TO_MANAGED_PROFILE.add(ENABLED_INPUT_METHODS);
5436 CLONE_TO_MANAGED_PROFILE.add(LOCATION_MODE);
5437 CLONE_TO_MANAGED_PROFILE.add(LOCATION_PROVIDERS_ALLOWED);
5438 CLONE_TO_MANAGED_PROFILE.add(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
5439 CLONE_TO_MANAGED_PROFILE.add(SELECTED_INPUT_METHOD_SUBTYPE);
5440 CLONE_TO_MANAGED_PROFILE.add(SELECTED_SPELL_CHECKER);
5441 CLONE_TO_MANAGED_PROFILE.add(SELECTED_SPELL_CHECKER_SUBTYPE);
5442 }
5443
5444 /** @hide */
5445 public static void getCloneToManagedProfileSettings(Set<String> outKeySet) {
5446 outKeySet.addAll(CLONE_TO_MANAGED_PROFILE);
5447 }
Amith Yamasani4f7e2e32014-08-14 18:49:48 -07005448
5449 /**
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005450 * Helper method for determining if a location provider is enabled.
Tom O'Neilld5759432013-09-11 11:03:03 -07005451 *
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005452 * @param cr the content resolver to use
5453 * @param provider the location provider to query
5454 * @return true if the provider is enabled
Tom O'Neilld5759432013-09-11 11:03:03 -07005455 *
5456 * @deprecated use {@link #LOCATION_MODE} or
5457 * {@link LocationManager#isProviderEnabled(String)}
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005458 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005459 @Deprecated
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005460 public static final boolean isLocationProviderEnabled(ContentResolver cr, String provider) {
Victoria Leaseb711d572012-10-02 13:14:11 -07005461 return isLocationProviderEnabledForUser(cr, provider, UserHandle.myUserId());
5462 }
5463
5464 /**
5465 * Helper method for determining if a location provider is enabled.
5466 * @param cr the content resolver to use
5467 * @param provider the location provider to query
5468 * @param userId the userId to query
5469 * @return true if the provider is enabled
Tom O'Neilld5759432013-09-11 11:03:03 -07005470 * @deprecated use {@link #LOCATION_MODE} or
5471 * {@link LocationManager#isProviderEnabled(String)}
Victoria Leaseb711d572012-10-02 13:14:11 -07005472 * @hide
5473 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005474 @Deprecated
Victoria Leaseb711d572012-10-02 13:14:11 -07005475 public static final boolean isLocationProviderEnabledForUser(ContentResolver cr, String provider, int userId) {
5476 String allowedProviders = Settings.Secure.getStringForUser(cr,
5477 LOCATION_PROVIDERS_ALLOWED, userId);
Brad Fitzpatrick11fe1812010-09-10 16:07:52 -07005478 return TextUtils.delimitedStringContains(allowedProviders, ',', provider);
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005479 }
5480
5481 /**
5482 * Thread-safe method for enabling or disabling a single location provider.
5483 * @param cr the content resolver to use
5484 * @param provider the location provider to enable or disable
5485 * @param enabled true if the provider should be enabled
Tom O'Neilla324ac72013-08-26 14:40:23 -07005486 * @deprecated use {@link #putInt(ContentResolver, String, int)} and {@link #LOCATION_MODE}
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005487 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005488 @Deprecated
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005489 public static final void setLocationProviderEnabled(ContentResolver cr,
5490 String provider, boolean enabled) {
Victoria Leaseb711d572012-10-02 13:14:11 -07005491 setLocationProviderEnabledForUser(cr, provider, enabled, UserHandle.myUserId());
5492 }
5493
5494 /**
5495 * Thread-safe method for enabling or disabling a single location provider.
Tom O'Neilla324ac72013-08-26 14:40:23 -07005496 *
Victoria Leaseb711d572012-10-02 13:14:11 -07005497 * @param cr the content resolver to use
5498 * @param provider the location provider to enable or disable
5499 * @param enabled true if the provider should be enabled
5500 * @param userId the userId for which to enable/disable providers
Tom O'Neilla324ac72013-08-26 14:40:23 -07005501 * @return true if the value was set, false on database errors
5502 * @deprecated use {@link #putIntForUser(ContentResolver, String, int, int)} and
5503 * {@link #LOCATION_MODE}
Victoria Leaseb711d572012-10-02 13:14:11 -07005504 * @hide
5505 */
Tom O'Neill1f48b782013-08-19 18:14:56 -07005506 @Deprecated
Tom O'Neilla324ac72013-08-26 14:40:23 -07005507 public static final boolean setLocationProviderEnabledForUser(ContentResolver cr,
Victoria Leaseb711d572012-10-02 13:14:11 -07005508 String provider, boolean enabled, int userId) {
David Christie3f7b6522013-08-06 19:19:08 -07005509 synchronized (mLocationSettingsLock) {
5510 // to ensure thread safety, we write the provider name with a '+' or '-'
5511 // and let the SettingsProvider handle it rather than reading and modifying
5512 // the list of enabled providers.
5513 if (enabled) {
5514 provider = "+" + provider;
5515 } else {
5516 provider = "-" + provider;
5517 }
Tom O'Neilla324ac72013-08-26 14:40:23 -07005518 return putStringForUser(cr, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, provider,
David Christie3f7b6522013-08-06 19:19:08 -07005519 userId);
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005520 }
Mike Lockwoodbd2a7122009-04-02 23:41:33 -07005521 }
Tom O'Neill1f48b782013-08-19 18:14:56 -07005522
5523 /**
5524 * Thread-safe method for setting the location mode to one of
5525 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY},
5526 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}.
5527 *
Tom O'Neill1f48b782013-08-19 18:14:56 -07005528 * @param cr the content resolver to use
5529 * @param mode such as {@link #LOCATION_MODE_HIGH_ACCURACY}
5530 * @param userId the userId for which to change mode
Tom O'Neilla324ac72013-08-26 14:40:23 -07005531 * @return true if the value was set, false on database errors
Tom O'Neill1f48b782013-08-19 18:14:56 -07005532 *
5533 * @throws IllegalArgumentException if mode is not one of the supported values
5534 */
Tom O'Neill7f6f4572013-08-27 10:53:15 -07005535 private static final boolean setLocationModeForUser(ContentResolver cr, int mode,
5536 int userId) {
Tom O'Neill1f48b782013-08-19 18:14:56 -07005537 synchronized (mLocationSettingsLock) {
5538 boolean gps = false;
5539 boolean network = false;
5540 switch (mode) {
5541 case LOCATION_MODE_OFF:
5542 break;
5543 case LOCATION_MODE_SENSORS_ONLY:
5544 gps = true;
5545 break;
5546 case LOCATION_MODE_BATTERY_SAVING:
5547 network = true;
5548 break;
5549 case LOCATION_MODE_HIGH_ACCURACY:
5550 gps = true;
5551 network = true;
5552 break;
5553 default:
5554 throw new IllegalArgumentException("Invalid location mode: " + mode);
5555 }
Tom O'Neill7731a992014-10-09 11:30:49 -07005556 // Note it's important that we set the NLP mode first. The Google implementation
5557 // of NLP clears its NLP consent setting any time it receives a
5558 // LocationManager.PROVIDERS_CHANGED_ACTION broadcast and NLP is disabled. Also,
5559 // it shows an NLP consent dialog any time it receives the broadcast, NLP is
5560 // enabled, and the NLP consent is not set. If 1) we were to enable GPS first,
5561 // 2) a setup wizard has its own NLP consent UI that sets the NLP consent setting,
5562 // and 3) the receiver happened to complete before we enabled NLP, then the Google
5563 // NLP would detect the attempt to enable NLP and show a redundant NLP consent
5564 // dialog. Then the people who wrote the setup wizard would be sad.
Tom O'Neilla324ac72013-08-26 14:40:23 -07005565 boolean nlpSuccess = Settings.Secure.setLocationProviderEnabledForUser(
Tom O'Neill1f48b782013-08-19 18:14:56 -07005566 cr, LocationManager.NETWORK_PROVIDER, network, userId);
Tom O'Neill7731a992014-10-09 11:30:49 -07005567 boolean gpsSuccess = Settings.Secure.setLocationProviderEnabledForUser(
5568 cr, LocationManager.GPS_PROVIDER, gps, userId);
Tom O'Neilla324ac72013-08-26 14:40:23 -07005569 return gpsSuccess && nlpSuccess;
Tom O'Neill1f48b782013-08-19 18:14:56 -07005570 }
5571 }
5572
5573 /**
Tom O'Neill1f48b782013-08-19 18:14:56 -07005574 * Thread-safe method for reading the location mode, returns one of
5575 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY},
5576 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}.
5577 *
5578 * @param cr the content resolver to use
5579 * @param userId the userId for which to read the mode
5580 * @return the location mode
5581 */
Tom O'Neill7f6f4572013-08-27 10:53:15 -07005582 private static final int getLocationModeForUser(ContentResolver cr, int userId) {
Tom O'Neill1f48b782013-08-19 18:14:56 -07005583 synchronized (mLocationSettingsLock) {
5584 boolean gpsEnabled = Settings.Secure.isLocationProviderEnabledForUser(
5585 cr, LocationManager.GPS_PROVIDER, userId);
5586 boolean networkEnabled = Settings.Secure.isLocationProviderEnabledForUser(
5587 cr, LocationManager.NETWORK_PROVIDER, userId);
5588 if (gpsEnabled && networkEnabled) {
5589 return LOCATION_MODE_HIGH_ACCURACY;
5590 } else if (gpsEnabled) {
5591 return LOCATION_MODE_SENSORS_ONLY;
5592 } else if (networkEnabled) {
5593 return LOCATION_MODE_BATTERY_SAVING;
5594 } else {
5595 return LOCATION_MODE_OFF;
5596 }
5597 }
5598 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08005599 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07005600
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08005601 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005602 * Global system settings, containing preferences that always apply identically
5603 * to all defined users. Applications can read these but are not allowed to write;
5604 * like the "Secure" settings, these are for preferences that the user must
5605 * explicitly modify through the system UI or specialized APIs for those values.
5606 */
5607 public static final class Global extends NameValueTable {
5608 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_global_version";
5609
5610 /**
5611 * The content:// style URL for global secure settings items. Not public.
5612 */
5613 public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/global");
5614
5615 /**
Amith Yamasani23a0f052014-07-25 12:26:53 -07005616 * Whether users are allowed to add more users or guest from lockscreen.
5617 * <p>
5618 * Type: int
5619 * @hide
5620 */
5621 public static final String ADD_USERS_WHEN_LOCKED = "add_users_when_locked";
5622
5623 /**
Svetoslav Ganov7befb7d2012-09-27 16:49:23 -07005624 * Setting whether the global gesture for enabling accessibility is enabled.
5625 * If this gesture is enabled the user will be able to perfrom it to enable
5626 * the accessibility state without visiting the settings app.
5627 * @hide
5628 */
5629 public static final String ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED =
5630 "enable_accessibility_global_gesture_enabled";
5631
5632 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005633 * Whether Airplane Mode is on.
5634 */
5635 public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
5636
5637 /**
Bryce Lee584a4452014-10-21 15:55:55 -07005638 * Whether Theater Mode is on.
5639 * {@hide}
5640 */
Bryce Leecdfebd62015-02-02 08:19:11 -08005641 @SystemApi
Bryce Lee584a4452014-10-21 15:55:55 -07005642 public static final String THEATER_MODE_ON = "theater_mode_on";
5643
5644 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005645 * Constant for use in AIRPLANE_MODE_RADIOS to specify Bluetooth radio.
5646 */
5647 public static final String RADIO_BLUETOOTH = "bluetooth";
5648
5649 /**
5650 * Constant for use in AIRPLANE_MODE_RADIOS to specify Wi-Fi radio.
5651 */
5652 public static final String RADIO_WIFI = "wifi";
5653
5654 /**
5655 * {@hide}
5656 */
5657 public static final String RADIO_WIMAX = "wimax";
5658 /**
5659 * Constant for use in AIRPLANE_MODE_RADIOS to specify Cellular radio.
5660 */
5661 public static final String RADIO_CELL = "cell";
5662
5663 /**
5664 * Constant for use in AIRPLANE_MODE_RADIOS to specify NFC radio.
5665 */
5666 public static final String RADIO_NFC = "nfc";
5667
5668 /**
5669 * A comma separated list of radios that need to be disabled when airplane mode
5670 * is on. This overrides WIFI_ON and BLUETOOTH_ON, if Wi-Fi and bluetooth are
5671 * included in the comma separated list.
5672 */
5673 public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
5674
5675 /**
5676 * A comma separated list of radios that should to be disabled when airplane mode
5677 * is on, but can be manually reenabled by the user. For example, if RADIO_WIFI is
5678 * added to both AIRPLANE_MODE_RADIOS and AIRPLANE_MODE_TOGGLEABLE_RADIOS, then Wifi
5679 * will be turned off when entering airplane mode, but the user will be able to reenable
5680 * Wifi in the Settings app.
5681 *
5682 * {@hide}
5683 */
5684 public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios";
5685
5686 /**
5687 * The policy for deciding when Wi-Fi should go to sleep (which will in
5688 * turn switch to using the mobile data as an Internet connection).
5689 * <p>
5690 * Set to one of {@link #WIFI_SLEEP_POLICY_DEFAULT},
5691 * {@link #WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED}, or
5692 * {@link #WIFI_SLEEP_POLICY_NEVER}.
5693 */
5694 public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
5695
5696 /**
5697 * Value for {@link #WIFI_SLEEP_POLICY} to use the default Wi-Fi sleep
5698 * policy, which is to sleep shortly after the turning off
5699 * according to the {@link #STAY_ON_WHILE_PLUGGED_IN} setting.
5700 */
5701 public static final int WIFI_SLEEP_POLICY_DEFAULT = 0;
5702
5703 /**
5704 * Value for {@link #WIFI_SLEEP_POLICY} to use the default policy when
5705 * the device is on battery, and never go to sleep when the device is
5706 * plugged in.
5707 */
5708 public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1;
5709
5710 /**
5711 * Value for {@link #WIFI_SLEEP_POLICY} to never go to sleep.
5712 */
5713 public static final int WIFI_SLEEP_POLICY_NEVER = 2;
5714
5715 /**
5716 * Value to specify if the user prefers the date, time and time zone
5717 * to be automatically fetched from the network (NITZ). 1=yes, 0=no
5718 */
5719 public static final String AUTO_TIME = "auto_time";
5720
5721 /**
5722 * Value to specify if the user prefers the time zone
5723 * to be automatically fetched from the network (NITZ). 1=yes, 0=no
5724 */
5725 public static final String AUTO_TIME_ZONE = "auto_time_zone";
5726
5727 /**
5728 * URI for the car dock "in" event sound.
5729 * @hide
5730 */
5731 public static final String CAR_DOCK_SOUND = "car_dock_sound";
5732
5733 /**
5734 * URI for the car dock "out" event sound.
5735 * @hide
5736 */
5737 public static final String CAR_UNDOCK_SOUND = "car_undock_sound";
5738
5739 /**
5740 * URI for the desk dock "in" event sound.
5741 * @hide
5742 */
5743 public static final String DESK_DOCK_SOUND = "desk_dock_sound";
5744
5745 /**
5746 * URI for the desk dock "out" event sound.
5747 * @hide
5748 */
5749 public static final String DESK_UNDOCK_SOUND = "desk_undock_sound";
5750
5751 /**
5752 * Whether to play a sound for dock events.
5753 * @hide
5754 */
5755 public static final String DOCK_SOUNDS_ENABLED = "dock_sounds_enabled";
5756
5757 /**
5758 * URI for the "device locked" (keyguard shown) sound.
5759 * @hide
5760 */
5761 public static final String LOCK_SOUND = "lock_sound";
5762
5763 /**
5764 * URI for the "device unlocked" sound.
5765 * @hide
5766 */
5767 public static final String UNLOCK_SOUND = "unlock_sound";
5768
5769 /**
Adrian Roos49e057d2014-08-13 17:14:51 +02005770 * URI for the "device is trusted" sound, which is played when the device enters the trusted
5771 * state without unlocking.
5772 * @hide
5773 */
5774 public static final String TRUSTED_SOUND = "trusted_sound";
5775
5776 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005777 * URI for the low battery sound file.
5778 * @hide
5779 */
5780 public static final String LOW_BATTERY_SOUND = "low_battery_sound";
5781
5782 /**
5783 * Whether to play a sound for low-battery alerts.
5784 * @hide
5785 */
5786 public static final String POWER_SOUNDS_ENABLED = "power_sounds_enabled";
5787
5788 /**
Jeff Brown84e27562012-12-07 13:56:34 -08005789 * URI for the "wireless charging started" sound.
5790 * @hide
5791 */
5792 public static final String WIRELESS_CHARGING_STARTED_SOUND =
5793 "wireless_charging_started_sound";
5794
5795 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005796 * Whether we keep the device on while the device is plugged in.
5797 * Supported values are:
5798 * <ul>
5799 * <li>{@code 0} to never stay on while plugged in</li>
5800 * <li>{@link BatteryManager#BATTERY_PLUGGED_AC} to stay on for AC charger</li>
5801 * <li>{@link BatteryManager#BATTERY_PLUGGED_USB} to stay on for USB charger</li>
5802 * <li>{@link BatteryManager#BATTERY_PLUGGED_WIRELESS} to stay on for wireless charger</li>
5803 * </ul>
5804 * These values can be OR-ed together.
5805 */
5806 public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
5807
5808 /**
Christopher Tate58f41ec2013-01-11 15:40:36 -08005809 * When the user has enable the option to have a "bug report" command
5810 * in the power menu.
5811 * @hide
5812 */
5813 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu";
5814
5815 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005816 * Whether ADB is enabled.
5817 */
5818 public static final String ADB_ENABLED = "adb_enabled";
5819
5820 /**
Jon Miranda836c0a82014-08-11 12:32:26 -07005821 * Whether Views are allowed to save their attribute data.
5822 * @hide
5823 */
5824 public static final String DEBUG_VIEW_ATTRIBUTES = "debug_view_attributes";
5825
5826 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005827 * Whether assisted GPS should be enabled or not.
5828 * @hide
5829 */
5830 public static final String ASSISTED_GPS_ENABLED = "assisted_gps_enabled";
5831
5832 /**
5833 * Whether bluetooth is enabled/disabled
5834 * 0=disabled. 1=enabled.
5835 */
5836 public static final String BLUETOOTH_ON = "bluetooth_on";
5837
5838 /**
5839 * CDMA Cell Broadcast SMS
5840 * 0 = CDMA Cell Broadcast SMS disabled
5841 * 1 = CDMA Cell Broadcast SMS enabled
5842 * @hide
5843 */
5844 public static final String CDMA_CELL_BROADCAST_SMS =
5845 "cdma_cell_broadcast_sms";
5846
5847 /**
5848 * The CDMA roaming mode 0 = Home Networks, CDMA default
5849 * 1 = Roaming on Affiliated networks
5850 * 2 = Roaming on any networks
5851 * @hide
5852 */
5853 public static final String CDMA_ROAMING_MODE = "roaming_settings";
5854
5855 /**
5856 * The CDMA subscription mode 0 = RUIM/SIM (default)
5857 * 1 = NV
5858 * @hide
5859 */
5860 public static final String CDMA_SUBSCRIPTION_MODE = "subscription_mode";
5861
5862 /** Inactivity timeout to track mobile data activity.
5863 *
5864 * If set to a positive integer, it indicates the inactivity timeout value in seconds to
5865 * infer the data activity of mobile network. After a period of no activity on mobile
5866 * networks with length specified by the timeout, an {@code ACTION_DATA_ACTIVITY_CHANGE}
5867 * intent is fired to indicate a transition of network status from "active" to "idle". Any
5868 * subsequent activity on mobile networks triggers the firing of {@code
5869 * ACTION_DATA_ACTIVITY_CHANGE} intent indicating transition from "idle" to "active".
5870 *
5871 * Network activity refers to transmitting or receiving data on the network interfaces.
5872 *
5873 * Tracking is disabled if set to zero or negative value.
5874 *
5875 * @hide
5876 */
5877 public static final String DATA_ACTIVITY_TIMEOUT_MOBILE = "data_activity_timeout_mobile";
5878
5879 /** Timeout to tracking Wifi data activity. Same as {@code DATA_ACTIVITY_TIMEOUT_MOBILE}
5880 * but for Wifi network.
5881 * @hide
5882 */
5883 public static final String DATA_ACTIVITY_TIMEOUT_WIFI = "data_activity_timeout_wifi";
5884
5885 /**
5886 * Whether or not data roaming is enabled. (0 = false, 1 = true)
5887 */
5888 public static final String DATA_ROAMING = "data_roaming";
5889
5890 /**
Wink Saville75c1e692013-03-20 17:06:50 -07005891 * The value passed to a Mobile DataConnection via bringUp which defines the
5892 * number of retries to preform when setting up the initial connection. The default
5893 * value defined in DataConnectionTrackerBase#DEFAULT_MDC_INITIAL_RETRY is currently 1.
5894 * @hide
5895 */
5896 public static final String MDC_INITIAL_MAX_RETRY = "mdc_initial_max_retry";
5897
5898 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005899 * Whether user has enabled development settings.
5900 */
5901 public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
5902
5903 /**
5904 * Whether the device has been provisioned (0 = false, 1 = true)
5905 */
5906 public static final String DEVICE_PROVISIONED = "device_provisioned";
5907
5908 /**
5909 * The saved value for WindowManagerService.setForcedDisplayDensity().
5910 * One integer in dpi. If unset, then use the real display density.
5911 * @hide
5912 */
5913 public static final String DISPLAY_DENSITY_FORCED = "display_density_forced";
5914
5915 /**
5916 * The saved value for WindowManagerService.setForcedDisplaySize().
5917 * Two integers separated by a comma. If unset, then use the real display size.
5918 * @hide
5919 */
5920 public static final String DISPLAY_SIZE_FORCED = "display_size_forced";
5921
5922 /**
5923 * The maximum size, in bytes, of a download that the download manager will transfer over
5924 * a non-wifi connection.
5925 * @hide
5926 */
5927 public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE =
5928 "download_manager_max_bytes_over_mobile";
5929
5930 /**
5931 * The recommended maximum size, in bytes, of a download that the download manager should
5932 * transfer over a non-wifi connection. Over this size, the use will be warned, but will
5933 * have the option to start the download over the mobile connection anyway.
5934 * @hide
5935 */
5936 public static final String DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE =
5937 "download_manager_recommended_max_bytes_over_mobile";
5938
5939 /**
Christopher Tateaa036a22014-05-19 16:33:27 -07005940 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead
Christopher Tate06efb532012-08-24 15:29:27 -07005941 */
Christopher Tateaa036a22014-05-19 16:33:27 -07005942 @Deprecated
5943 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS;
Christopher Tate06efb532012-08-24 15:29:27 -07005944
5945 /**
Jinsuk Kimb3d91772014-07-10 12:48:54 +09005946 * Whether HDMI control shall be enabled. If disabled, no CEC/MHL command will be
5947 * sent or processed. (0 = false, 1 = true)
5948 * @hide
5949 */
5950 public static final String HDMI_CONTROL_ENABLED = "hdmi_control_enabled";
5951
5952 /**
5953 * Whether HDMI system audio is enabled. If enabled, TV internal speaker is muted,
5954 * and the output is redirected to AV Receiver connected via
5955 * {@Global#HDMI_SYSTEM_AUDIO_OUTPUT}.
5956 * @hide
5957 */
5958 public static final String HDMI_SYSTEM_AUDIO_ENABLED = "hdmi_system_audio_enabled";
5959
5960 /**
Jinsuk Kimb3d91772014-07-10 12:48:54 +09005961 * Whether TV will automatically turn on upon reception of the CEC command
5962 * &lt;Text View On&gt; or &lt;Image View On&gt;. (0 = false, 1 = true)
5963 * @hide
5964 */
5965 public static final String HDMI_CONTROL_AUTO_WAKEUP_ENABLED =
5966 "hdmi_control_auto_wakeup_enabled";
5967
5968 /**
5969 * Whether TV will also turn off other CEC devices when it goes to standby mode.
5970 * (0 = false, 1 = true)
5971 * @hide
5972 */
5973 public static final String HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED =
5974 "hdmi_control_auto_device_off_enabled";
5975
5976 /**
5977 * Whether TV will switch to MHL port when a mobile device is plugged in.
5978 * (0 = false, 1 = true)
5979 * @hide
5980 */
5981 public static final String MHL_INPUT_SWITCHING_ENABLED = "mhl_input_switching_enabled";
5982
5983 /**
5984 * Whether TV will charge the mobile device connected at MHL port. (0 = false, 1 = true)
5985 * @hide
5986 */
5987 public static final String MHL_POWER_CHARGE_ENABLED = "mhl_power_charge_enabled";
5988
5989 /**
Christopher Tate06efb532012-08-24 15:29:27 -07005990 * Whether mobile data connections are allowed by the user. See
5991 * ConnectivityManager for more info.
5992 * @hide
5993 */
5994 public static final String MOBILE_DATA = "mobile_data";
5995
5996 /** {@hide} */
5997 public static final String NETSTATS_ENABLED = "netstats_enabled";
5998 /** {@hide} */
5999 public static final String NETSTATS_POLL_INTERVAL = "netstats_poll_interval";
6000 /** {@hide} */
6001 public static final String NETSTATS_TIME_CACHE_MAX_AGE = "netstats_time_cache_max_age";
6002 /** {@hide} */
6003 public static final String NETSTATS_GLOBAL_ALERT_BYTES = "netstats_global_alert_bytes";
6004 /** {@hide} */
6005 public static final String NETSTATS_SAMPLE_ENABLED = "netstats_sample_enabled";
Christopher Tate06efb532012-08-24 15:29:27 -07006006
6007 /** {@hide} */
6008 public static final String NETSTATS_DEV_BUCKET_DURATION = "netstats_dev_bucket_duration";
6009 /** {@hide} */
6010 public static final String NETSTATS_DEV_PERSIST_BYTES = "netstats_dev_persist_bytes";
6011 /** {@hide} */
6012 public static final String NETSTATS_DEV_ROTATE_AGE = "netstats_dev_rotate_age";
6013 /** {@hide} */
6014 public static final String NETSTATS_DEV_DELETE_AGE = "netstats_dev_delete_age";
6015
6016 /** {@hide} */
6017 public static final String NETSTATS_UID_BUCKET_DURATION = "netstats_uid_bucket_duration";
6018 /** {@hide} */
6019 public static final String NETSTATS_UID_PERSIST_BYTES = "netstats_uid_persist_bytes";
6020 /** {@hide} */
6021 public static final String NETSTATS_UID_ROTATE_AGE = "netstats_uid_rotate_age";
6022 /** {@hide} */
6023 public static final String NETSTATS_UID_DELETE_AGE = "netstats_uid_delete_age";
6024
6025 /** {@hide} */
6026 public static final String NETSTATS_UID_TAG_BUCKET_DURATION = "netstats_uid_tag_bucket_duration";
6027 /** {@hide} */
6028 public static final String NETSTATS_UID_TAG_PERSIST_BYTES = "netstats_uid_tag_persist_bytes";
6029 /** {@hide} */
6030 public static final String NETSTATS_UID_TAG_ROTATE_AGE = "netstats_uid_tag_rotate_age";
6031 /** {@hide} */
6032 public static final String NETSTATS_UID_TAG_DELETE_AGE = "netstats_uid_tag_delete_age";
6033
6034 /**
6035 * User preference for which network(s) should be used. Only the
6036 * connectivity service should touch this.
6037 */
6038 public static final String NETWORK_PREFERENCE = "network_preference";
6039
6040 /**
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -07006041 * Which package name to use for network scoring. If null, or if the package is not a valid
6042 * scorer app, external network scores will neither be requested nor accepted.
6043 * @hide
6044 */
6045 public static final String NETWORK_SCORER_APP = "network_scorer_app";
6046
6047 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006048 * If the NITZ_UPDATE_DIFF time is exceeded then an automatic adjustment
6049 * to SystemClock will be allowed even if NITZ_UPDATE_SPACING has not been
6050 * exceeded.
6051 * @hide
6052 */
6053 public static final String NITZ_UPDATE_DIFF = "nitz_update_diff";
6054
6055 /**
6056 * The length of time in milli-seconds that automatic small adjustments to
6057 * SystemClock are ignored if NITZ_UPDATE_DIFF is not exceeded.
6058 * @hide
6059 */
6060 public static final String NITZ_UPDATE_SPACING = "nitz_update_spacing";
6061
6062 /** Preferred NTP server. {@hide} */
6063 public static final String NTP_SERVER = "ntp_server";
6064 /** Timeout in milliseconds to wait for NTP server. {@hide} */
6065 public static final String NTP_TIMEOUT = "ntp_timeout";
6066
6067 /**
rich cannings4d8fc792012-09-07 14:43:43 -07006068 * Whether the package manager should send package verification broadcasts for verifiers to
6069 * review apps prior to installation.
6070 * 1 = request apps to be verified prior to installation, if a verifier exists.
6071 * 0 = do not verify apps before installation
rich cannings4e5753f2012-09-19 16:03:56 -07006072 * @hide
rich cannings4d8fc792012-09-07 14:43:43 -07006073 */
6074 public static final String PACKAGE_VERIFIER_ENABLE = "package_verifier_enable";
6075
6076 /** Timeout for package verification.
rich cannings4e5753f2012-09-19 16:03:56 -07006077 * @hide */
rich cannings4d8fc792012-09-07 14:43:43 -07006078 public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout";
6079
6080 /** Default response code for package verification.
rich cannings4e5753f2012-09-19 16:03:56 -07006081 * @hide */
rich cannings4d8fc792012-09-07 14:43:43 -07006082 public static final String PACKAGE_VERIFIER_DEFAULT_RESPONSE = "verifier_default_response";
6083
rich cannings4e5753f2012-09-19 16:03:56 -07006084 /**
6085 * Show package verification setting in the Settings app.
rich canningse6686b32012-09-16 14:02:20 -07006086 * 1 = show (default)
6087 * 0 = hide
rich cannings4e5753f2012-09-19 16:03:56 -07006088 * @hide
rich canningse6686b32012-09-16 14:02:20 -07006089 */
6090 public static final String PACKAGE_VERIFIER_SETTING_VISIBLE = "verifier_setting_visible";
6091
rich cannings4d8fc792012-09-07 14:43:43 -07006092 /**
rich cannings4e5753f2012-09-19 16:03:56 -07006093 * Run package verificaiton on apps installed through ADB/ADT/USB
6094 * 1 = perform package verification on ADB installs (default)
6095 * 0 = bypass package verification on ADB installs
6096 * @hide
6097 */
6098 public static final String PACKAGE_VERIFIER_INCLUDE_ADB = "verifier_verify_adb_installs";
6099
6100 /**
Christopher Tate7265abe2014-11-21 13:54:45 -08006101 * Time since last fstrim (milliseconds) after which we force one to happen
6102 * during device startup. If unset, the default is 3 days.
6103 * @hide
6104 */
6105 public static final String FSTRIM_MANDATORY_INTERVAL = "fstrim_mandatory_interval";
6106
6107 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006108 * The interval in milliseconds at which to check packet counts on the
6109 * mobile data interface when screen is on, to detect possible data
6110 * connection problems.
6111 * @hide
6112 */
6113 public static final String PDP_WATCHDOG_POLL_INTERVAL_MS =
6114 "pdp_watchdog_poll_interval_ms";
6115
6116 /**
6117 * The interval in milliseconds at which to check packet counts on the
6118 * mobile data interface when screen is off, to detect possible data
6119 * connection problems.
6120 * @hide
6121 */
6122 public static final String PDP_WATCHDOG_LONG_POLL_INTERVAL_MS =
6123 "pdp_watchdog_long_poll_interval_ms";
6124
6125 /**
6126 * The interval in milliseconds at which to check packet counts on the
6127 * mobile data interface after {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT}
6128 * outgoing packets has been reached without incoming packets.
6129 * @hide
6130 */
6131 public static final String PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS =
6132 "pdp_watchdog_error_poll_interval_ms";
6133
6134 /**
6135 * The number of outgoing packets sent without seeing an incoming packet
6136 * that triggers a countdown (of {@link #PDP_WATCHDOG_ERROR_POLL_COUNT}
6137 * device is logged to the event log
6138 * @hide
6139 */
6140 public static final String PDP_WATCHDOG_TRIGGER_PACKET_COUNT =
6141 "pdp_watchdog_trigger_packet_count";
6142
6143 /**
6144 * The number of polls to perform (at {@link #PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS})
6145 * after hitting {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} before
6146 * attempting data connection recovery.
6147 * @hide
6148 */
6149 public static final String PDP_WATCHDOG_ERROR_POLL_COUNT =
6150 "pdp_watchdog_error_poll_count";
6151
6152 /**
6153 * The number of failed PDP reset attempts before moving to something more
6154 * drastic: re-registering to the network.
6155 * @hide
6156 */
6157 public static final String PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT =
6158 "pdp_watchdog_max_pdp_reset_fail_count";
6159
6160 /**
6161 * A positive value indicates how often the SamplingProfiler
6162 * should take snapshots. Zero value means SamplingProfiler
6163 * is disabled.
6164 *
6165 * @hide
6166 */
6167 public static final String SAMPLING_PROFILER_MS = "sampling_profiler_ms";
6168
6169 /**
6170 * URL to open browser on to allow user to manage a prepay account
6171 * @hide
6172 */
6173 public static final String SETUP_PREPAID_DATA_SERVICE_URL =
6174 "setup_prepaid_data_service_url";
6175
6176 /**
6177 * URL to attempt a GET on to see if this is a prepay device
6178 * @hide
6179 */
6180 public static final String SETUP_PREPAID_DETECTION_TARGET_URL =
6181 "setup_prepaid_detection_target_url";
6182
6183 /**
6184 * Host to check for a redirect to after an attempt to GET
6185 * SETUP_PREPAID_DETECTION_TARGET_URL. (If we redirected there,
6186 * this is a prepaid device with zero balance.)
6187 * @hide
6188 */
6189 public static final String SETUP_PREPAID_DETECTION_REDIR_HOST =
6190 "setup_prepaid_detection_redir_host";
6191
6192 /**
Jake Hamby76a61422012-09-06 17:40:21 -07006193 * The interval in milliseconds at which to check the number of SMS sent out without asking
6194 * for use permit, to limit the un-authorized SMS usage.
6195 *
6196 * @hide
6197 */
6198 public static final String SMS_OUTGOING_CHECK_INTERVAL_MS =
6199 "sms_outgoing_check_interval_ms";
6200
6201 /**
6202 * The number of outgoing SMS sent without asking for user permit (of {@link
6203 * #SMS_OUTGOING_CHECK_INTERVAL_MS}
6204 *
6205 * @hide
6206 */
6207 public static final String SMS_OUTGOING_CHECK_MAX_COUNT =
6208 "sms_outgoing_check_max_count";
6209
6210 /**
6211 * Used to disable SMS short code confirmation - defaults to true.
Robert Greenwalt026efcc2012-09-24 10:03:21 -07006212 * True indcates we will do the check, etc. Set to false to disable.
Jake Hamby76a61422012-09-06 17:40:21 -07006213 * @see com.android.internal.telephony.SmsUsageMonitor
6214 * @hide
6215 */
6216 public static final String SMS_SHORT_CODE_CONFIRMATION = "sms_short_code_confirmation";
6217
Robert Greenwalt026efcc2012-09-24 10:03:21 -07006218 /**
6219 * Used to select which country we use to determine premium sms codes.
6220 * One of com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_SIM,
6221 * com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_NETWORK,
6222 * or com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_BOTH.
6223 * @hide
6224 */
6225 public static final String SMS_SHORT_CODE_RULE = "sms_short_code_rule";
6226
Jake Hamby76a61422012-09-06 17:40:21 -07006227 /**
JP Abgrall32d1ac4d2014-02-21 12:05:20 -08006228 * Used to select TCP's default initial receiver window size in segments - defaults to a build config value
6229 * @hide
6230 */
6231 public static final String TCP_DEFAULT_INIT_RWND = "tcp_default_init_rwnd";
6232
6233 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006234 * Used to disable Tethering on a device - defaults to true
6235 * @hide
6236 */
6237 public static final String TETHER_SUPPORTED = "tether_supported";
6238
6239 /**
6240 * Used to require DUN APN on the device or not - defaults to a build config value
6241 * which defaults to false
6242 * @hide
6243 */
6244 public static final String TETHER_DUN_REQUIRED = "tether_dun_required";
6245
6246 /**
6247 * Used to hold a gservices-provisioned apn value for DUN. If set, or the
6248 * corresponding build config values are set it will override the APN DB
6249 * values.
6250 * Consists of a comma seperated list of strings:
6251 * "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
6252 * note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN"
6253 * @hide
6254 */
6255 public static final String TETHER_DUN_APN = "tether_dun_apn";
6256
6257 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006258 * USB Mass Storage Enabled
6259 */
6260 public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
6261
6262 /**
6263 * If this setting is set (to anything), then all references
6264 * to Gmail on the device must change to Google Mail.
6265 */
6266 public static final String USE_GOOGLE_MAIL = "use_google_mail";
6267
Hui Shu22671772014-10-01 21:41:07 +00006268 /**
6269 * Webview Data reduction proxy key.
6270 * @hide
6271 */
6272 public static final String WEBVIEW_DATA_REDUCTION_PROXY_KEY =
6273 "webview_data_reduction_proxy_key";
6274
Christopher Tate06efb532012-08-24 15:29:27 -07006275 /**
Jeff Brown89d55462012-09-19 11:33:42 -07006276 * Whether Wifi display is enabled/disabled
6277 * 0=disabled. 1=enabled.
6278 * @hide
6279 */
6280 public static final String WIFI_DISPLAY_ON = "wifi_display_on";
6281
6282 /**
Chong Zhang1f3ecaa2013-05-03 15:55:36 -07006283 * Whether Wifi display certification mode is enabled/disabled
6284 * 0=disabled. 1=enabled.
6285 * @hide
6286 */
6287 public static final String WIFI_DISPLAY_CERTIFICATION_ON =
6288 "wifi_display_certification_on";
6289
6290 /**
Chong Zhange38af812013-08-29 17:25:17 -07006291 * WPS Configuration method used by Wifi display, this setting only
6292 * takes effect when WIFI_DISPLAY_CERTIFICATION_ON is 1 (enabled).
6293 *
6294 * Possible values are:
6295 *
6296 * WpsInfo.INVALID: use default WPS method chosen by framework
6297 * WpsInfo.PBC : use Push button
6298 * WpsInfo.KEYPAD : use Keypad
6299 * WpsInfo.DISPLAY: use Display
6300 * @hide
6301 */
6302 public static final String WIFI_DISPLAY_WPS_CONFIG =
6303 "wifi_display_wps_config";
6304
6305 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006306 * Whether to notify the user of open networks.
6307 * <p>
6308 * If not connected and the scan results have an open network, we will
6309 * put this notification up. If we attempt to connect to a network or
6310 * the open network(s) disappear, we remove the notification. When we
6311 * show the notification, we will not show it again for
6312 * {@link android.provider.Settings.Secure#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} time.
6313 */
6314 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON =
6315 "wifi_networks_available_notification_on";
6316 /**
6317 * {@hide}
6318 */
6319 public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON =
6320 "wimax_networks_available_notification_on";
6321
6322 /**
6323 * Delay (in seconds) before repeating the Wi-Fi networks available notification.
6324 * Connecting to a network will reset the timer.
6325 */
6326 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY =
6327 "wifi_networks_available_repeat_delay";
6328
6329 /**
Robert Greenwalt3ea0c992013-10-03 21:13:49 +00006330 * 802.11 country code in ISO 3166 format
6331 * @hide
6332 */
6333 public static final String WIFI_COUNTRY_CODE = "wifi_country_code";
6334
6335 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006336 * The interval in milliseconds to issue wake up scans when wifi needs
6337 * to connect. This is necessary to connect to an access point when
6338 * device is on the move and the screen is off.
6339 * @hide
6340 */
6341 public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS =
6342 "wifi_framework_scan_interval_ms";
6343
6344 /**
6345 * The interval in milliseconds after which Wi-Fi is considered idle.
6346 * When idle, it is possible for the device to be switched from Wi-Fi to
6347 * the mobile data network.
6348 * @hide
6349 */
6350 public static final String WIFI_IDLE_MS = "wifi_idle_ms";
6351
6352 /**
6353 * When the number of open networks exceeds this number, the
6354 * least-recently-used excess networks will be removed.
6355 */
6356 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
6357
6358 /**
6359 * Whether the Wi-Fi should be on. Only the Wi-Fi service should touch this.
6360 */
6361 public static final String WIFI_ON = "wifi_on";
6362
6363 /**
Irfan Sheriff11aefad2013-03-06 07:57:41 -08006364 * Setting to allow scans to be enabled even wifi is turned off for connectivity.
6365 * @hide
6366 */
6367 public static final String WIFI_SCAN_ALWAYS_AVAILABLE =
6368 "wifi_scan_always_enabled";
6369
6370 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006371 * Used to save the Wifi_ON state prior to tethering.
6372 * This state will be checked to restore Wifi after
6373 * the user turns off tethering.
6374 *
6375 * @hide
6376 */
6377 public static final String WIFI_SAVED_STATE = "wifi_saved_state";
6378
6379 /**
6380 * The interval in milliseconds to scan as used by the wifi supplicant
6381 * @hide
6382 */
6383 public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_MS =
6384 "wifi_supplicant_scan_interval_ms";
6385
vandwalle7c3606c2014-03-31 19:12:07 -07006386 /**
6387 * whether frameworks handles wifi auto-join
6388 * @hide
6389 */
6390 public static final String WIFI_ENHANCED_AUTO_JOIN =
6391 "wifi_enhanced_auto_join";
6392
6393 /**
6394 * whether settings show RSSI
6395 * @hide
6396 */
6397 public static final String WIFI_NETWORK_SHOW_RSSI =
6398 "wifi_network_show_rssi";
6399
6400 /**
Irfan Sheriff3809f502012-09-17 16:04:57 -07006401 * The interval in milliseconds to scan at supplicant when p2p is connected
6402 * @hide
6403 */
6404 public static final String WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS =
6405 "wifi_scan_interval_p2p_connected_ms";
6406
6407 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006408 * Whether the Wi-Fi watchdog is enabled.
6409 */
6410 public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
6411
6412 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006413 * Setting to turn off poor network avoidance on Wi-Fi. Feature is enabled by default and
6414 * the setting needs to be set to 0 to disable it.
6415 * @hide
6416 */
6417 public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED =
6418 "wifi_watchdog_poor_network_test_enabled";
6419
6420 /**
6421 * Setting to turn on suspend optimizations at screen off on Wi-Fi. Enabled by default and
6422 * needs to be set to 0 to disable it.
6423 * @hide
6424 */
6425 public static final String WIFI_SUSPEND_OPTIMIZATIONS_ENABLED =
6426 "wifi_suspend_optimizations_enabled";
6427
6428 /**
6429 * The maximum number of times we will retry a connection to an access
6430 * point for which we have failed in acquiring an IP address from DHCP.
6431 * A value of N means that we will make N+1 connection attempts in all.
6432 */
6433 public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
6434
6435 /**
6436 * Maximum amount of time in milliseconds to hold a wakelock while waiting for mobile
6437 * data connectivity to be established after a disconnect from Wi-Fi.
6438 */
6439 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS =
6440 "wifi_mobile_data_transition_wakelock_timeout_ms";
6441
6442 /**
6443 * The operational wifi frequency band
6444 * Set to one of {@link WifiManager#WIFI_FREQUENCY_BAND_AUTO},
6445 * {@link WifiManager#WIFI_FREQUENCY_BAND_5GHZ} or
6446 * {@link WifiManager#WIFI_FREQUENCY_BAND_2GHZ}
6447 *
6448 * @hide
6449 */
6450 public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band";
6451
6452 /**
6453 * The Wi-Fi peer-to-peer device name
6454 * @hide
6455 */
6456 public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name";
6457
6458 /**
Robert Greenwaltc12783a2013-05-16 12:48:20 -07006459 * The min time between wifi disable and wifi enable
6460 * @hide
6461 */
6462 public static final String WIFI_REENABLE_DELAY_MS = "wifi_reenable_delay";
6463
6464 /**
Jeff Davidsona20ca67d2014-12-16 11:48:54 -08006465 * Timeout for ephemeral networks when all known BSSIDs go out of range. We will disconnect
6466 * from an ephemeral network if there is no BSSID for that network with a non-null score that
6467 * has been seen in this time period.
6468 *
6469 * If this is less than or equal to zero, we use a more conservative behavior and only check
6470 * for a non-null score from the currently connected or target BSSID.
6471 * @hide
6472 */
6473 public static final String WIFI_EPHEMERAL_OUT_OF_RANGE_TIMEOUT_MS =
6474 "wifi_ephemeral_out_of_range_timeout_ms";
6475
6476 /**
Christopher Tatec868b642012-09-12 17:41:04 -07006477 * The number of milliseconds to delay when checking for data stalls during
6478 * non-aggressive detection. (screen is turned off.)
6479 * @hide
6480 */
6481 public static final String DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS =
6482 "data_stall_alarm_non_aggressive_delay_in_ms";
6483
6484 /**
6485 * The number of milliseconds to delay when checking for data stalls during
6486 * aggressive detection. (screen on or suspected data stall)
6487 * @hide
6488 */
6489 public static final String DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS =
6490 "data_stall_alarm_aggressive_delay_in_ms";
6491
6492 /**
Wink Savillece1e3792013-09-03 16:41:44 -07006493 * The number of milliseconds to allow the provisioning apn to remain active
6494 * @hide
6495 */
6496 public static final String PROVISIONING_APN_ALARM_DELAY_IN_MS =
6497 "provisioning_apn_alarm_delay_in_ms";
6498
6499 /**
Christopher Tatec868b642012-09-12 17:41:04 -07006500 * The interval in milliseconds at which to check gprs registration
6501 * after the first registration mismatch of gprs and voice service,
6502 * to detect possible data network registration problems.
6503 *
6504 * @hide
6505 */
6506 public static final String GPRS_REGISTER_CHECK_PERIOD_MS =
6507 "gprs_register_check_period_ms";
6508
6509 /**
Christopher Tate06efb532012-08-24 15:29:27 -07006510 * Nonzero causes Log.wtf() to crash.
6511 * @hide
6512 */
6513 public static final String WTF_IS_FATAL = "wtf_is_fatal";
6514
Eric Laurentbc0fab1f2012-09-19 11:24:41 -07006515 /**
6516 * Ringer mode. This is used internally, changing this value will not
6517 * change the ringer mode. See AudioManager.
6518 */
6519 public static final String MODE_RINGER = "mode_ringer";
Christopher Tate06efb532012-08-24 15:29:27 -07006520
Jeff Brownd4935962012-09-25 13:27:20 -07006521 /**
6522 * Overlay display devices setting.
6523 * The associated value is a specially formatted string that describes the
6524 * size and density of simulated secondary display devices.
6525 * <p>
6526 * Format: {width}x{height}/{dpi};...
6527 * </p><p>
6528 * Example:
6529 * <ul>
6530 * <li><code>1280x720/213</code>: make one overlay that is 1280x720 at 213dpi.</li>
6531 * <li><code>1920x1080/320;1280x720/213</code>: make two overlays, the first
6532 * at 1080p and the second at 720p.</li>
6533 * <li>If the value is empty, then no overlay display devices are created.</li>
6534 * </ul></p>
6535 *
6536 * @hide
6537 */
6538 public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
Christopher Tate06efb532012-08-24 15:29:27 -07006539
Jeff Sharkey625239a2012-09-26 22:03:49 -07006540 /**
6541 * Threshold values for the duration and level of a discharge cycle,
6542 * under which we log discharge cycle info.
6543 *
6544 * @hide
6545 */
6546 public static final String
6547 BATTERY_DISCHARGE_DURATION_THRESHOLD = "battery_discharge_duration_threshold";
6548
6549 /** @hide */
6550 public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold";
6551
6552 /**
6553 * Flag for allowing ActivityManagerService to send ACTION_APP_ERROR
6554 * intents on application crashes and ANRs. If this is disabled, the
6555 * crash/ANR dialog will never display the "Report" button.
6556 * <p>
6557 * Type: int (0 = disallow, 1 = allow)
6558 *
6559 * @hide
6560 */
6561 public static final String SEND_ACTION_APP_ERROR = "send_action_app_error";
6562
6563 /**
6564 * Maximum age of entries kept by {@link DropBoxManager}.
6565 *
6566 * @hide
6567 */
6568 public static final String DROPBOX_AGE_SECONDS = "dropbox_age_seconds";
6569
6570 /**
6571 * Maximum number of entry files which {@link DropBoxManager} will keep
6572 * around.
6573 *
6574 * @hide
6575 */
6576 public static final String DROPBOX_MAX_FILES = "dropbox_max_files";
6577
6578 /**
6579 * Maximum amount of disk space used by {@link DropBoxManager} no matter
6580 * what.
6581 *
6582 * @hide
6583 */
6584 public static final String DROPBOX_QUOTA_KB = "dropbox_quota_kb";
6585
6586 /**
6587 * Percent of free disk (excluding reserve) which {@link DropBoxManager}
6588 * will use.
6589 *
6590 * @hide
6591 */
6592 public static final String DROPBOX_QUOTA_PERCENT = "dropbox_quota_percent";
6593
6594 /**
6595 * Percent of total disk which {@link DropBoxManager} will never dip
6596 * into.
6597 *
6598 * @hide
6599 */
6600 public static final String DROPBOX_RESERVE_PERCENT = "dropbox_reserve_percent";
6601
6602 /**
6603 * Prefix for per-tag dropbox disable/enable settings.
6604 *
6605 * @hide
6606 */
6607 public static final String DROPBOX_TAG_PREFIX = "dropbox:";
6608
6609 /**
6610 * Lines of logcat to include with system crash/ANR/etc. reports, as a
6611 * prefix of the dropbox tag of the report type. For example,
6612 * "logcat_for_system_server_anr" controls the lines of logcat captured
6613 * with system server ANR reports. 0 to disable.
6614 *
6615 * @hide
6616 */
6617 public static final String ERROR_LOGCAT_PREFIX = "logcat_for_";
6618
6619 /**
6620 * The interval in minutes after which the amount of free storage left
6621 * on the device is logged to the event log
6622 *
6623 * @hide
6624 */
6625 public static final String SYS_FREE_STORAGE_LOG_INTERVAL = "sys_free_storage_log_interval";
6626
6627 /**
6628 * Threshold for the amount of change in disk free space required to
6629 * report the amount of free space. Used to prevent spamming the logs
6630 * when the disk free space isn't changing frequently.
6631 *
6632 * @hide
6633 */
6634 public static final String
6635 DISK_FREE_CHANGE_REPORTING_THRESHOLD = "disk_free_change_reporting_threshold";
6636
6637 /**
6638 * Minimum percentage of free storage on the device that is used to
6639 * determine if the device is running low on storage. The default is 10.
6640 * <p>
6641 * Say this value is set to 10, the device is considered running low on
6642 * storage if 90% or more of the device storage is filled up.
6643 *
6644 * @hide
6645 */
6646 public static final String
6647 SYS_STORAGE_THRESHOLD_PERCENTAGE = "sys_storage_threshold_percentage";
6648
6649 /**
6650 * Maximum byte size of the low storage threshold. This is to ensure
6651 * that {@link #SYS_STORAGE_THRESHOLD_PERCENTAGE} does not result in an
6652 * overly large threshold for large storage devices. Currently this must
6653 * be less than 2GB. This default is 500MB.
6654 *
6655 * @hide
6656 */
6657 public static final String
6658 SYS_STORAGE_THRESHOLD_MAX_BYTES = "sys_storage_threshold_max_bytes";
6659
6660 /**
6661 * Minimum bytes of free storage on the device before the data partition
6662 * is considered full. By default, 1 MB is reserved to avoid system-wide
6663 * SQLite disk full exceptions.
6664 *
6665 * @hide
6666 */
6667 public static final String
6668 SYS_STORAGE_FULL_THRESHOLD_BYTES = "sys_storage_full_threshold_bytes";
6669
6670 /**
6671 * The maximum reconnect delay for short network outages or when the
6672 * network is suspended due to phone use.
6673 *
6674 * @hide
6675 */
6676 public static final String
6677 SYNC_MAX_RETRY_DELAY_IN_SECONDS = "sync_max_retry_delay_in_seconds";
6678
6679 /**
6680 * The number of milliseconds to delay before sending out
Erik Kline8f29dcf2014-12-08 16:25:20 +09006681 * {@link ConnectivityManager#CONNECTIVITY_ACTION} broadcasts. Ignored.
Jeff Sharkey625239a2012-09-26 22:03:49 -07006682 *
6683 * @hide
6684 */
6685 public static final String CONNECTIVITY_CHANGE_DELAY = "connectivity_change_delay";
6686
Vinit Deshapnde1f12cb52013-08-21 13:09:01 -07006687
6688 /**
6689 * Network sampling interval, in seconds. We'll generate link information
6690 * about bytes/packets sent and error rates based on data sampled in this interval
6691 *
6692 * @hide
6693 */
6694
6695 public static final String CONNECTIVITY_SAMPLING_INTERVAL_IN_SECONDS =
6696 "connectivity_sampling_interval_in_seconds";
6697
Jeff Sharkey625239a2012-09-26 22:03:49 -07006698 /**
Jason Monk602b2322013-07-03 17:04:33 -04006699 * The series of successively longer delays used in retrying to download PAC file.
6700 * Last delay is used between successful PAC downloads.
6701 *
6702 * @hide
6703 */
6704 public static final String PAC_CHANGE_DELAY = "pac_change_delay";
6705
6706 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07006707 * Setting to turn off captive portal detection. Feature is enabled by
6708 * default and the setting needs to be set to 0 to disable it.
6709 *
6710 * @hide
6711 */
6712 public static final String
6713 CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled";
6714
6715 /**
6716 * The server used for captive portal detection upon a new conection. A
6717 * 204 response code from the server is used for validation.
6718 *
6719 * @hide
6720 */
6721 public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server";
6722
6723 /**
6724 * Whether network service discovery is enabled.
6725 *
6726 * @hide
6727 */
6728 public static final String NSD_ON = "nsd_on";
6729
6730 /**
6731 * Let user pick default install location.
6732 *
6733 * @hide
6734 */
6735 public static final String SET_INSTALL_LOCATION = "set_install_location";
6736
6737 /**
6738 * Default install location value.
6739 * 0 = auto, let system decide
6740 * 1 = internal
6741 * 2 = sdcard
6742 * @hide
6743 */
6744 public static final String DEFAULT_INSTALL_LOCATION = "default_install_location";
6745
6746 /**
6747 * ms during which to consume extra events related to Inet connection
6748 * condition after a transtion to fully-connected
6749 *
6750 * @hide
6751 */
6752 public static final String
6753 INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay";
6754
6755 /**
6756 * ms during which to consume extra events related to Inet connection
6757 * condtion after a transtion to partly-connected
6758 *
6759 * @hide
6760 */
6761 public static final String
6762 INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay";
6763
6764 /** {@hide} */
6765 public static final String
6766 READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT = "read_external_storage_enforced_default";
6767
6768 /**
6769 * Host name and port for global http proxy. Uses ':' seperator for
6770 * between host and port.
6771 */
6772 public static final String HTTP_PROXY = "http_proxy";
6773
6774 /**
6775 * Host name for global http proxy. Set via ConnectivityManager.
6776 *
6777 * @hide
6778 */
6779 public static final String GLOBAL_HTTP_PROXY_HOST = "global_http_proxy_host";
6780
6781 /**
6782 * Integer host port for global http proxy. Set via ConnectivityManager.
6783 *
6784 * @hide
6785 */
6786 public static final String GLOBAL_HTTP_PROXY_PORT = "global_http_proxy_port";
6787
6788 /**
6789 * Exclusion list for global proxy. This string contains a list of
6790 * comma-separated domains where the global proxy does not apply.
6791 * Domains should be listed in a comma- separated list. Example of
6792 * acceptable formats: ".domain1.com,my.domain2.com" Use
6793 * ConnectivityManager to set/get.
6794 *
6795 * @hide
6796 */
6797 public static final String
6798 GLOBAL_HTTP_PROXY_EXCLUSION_LIST = "global_http_proxy_exclusion_list";
6799
6800 /**
Jason Monk602b2322013-07-03 17:04:33 -04006801 * The location PAC File for the proxy.
6802 * @hide
6803 */
6804 public static final String
6805 GLOBAL_HTTP_PROXY_PAC = "global_proxy_pac_url";
6806
6807 /**
Jeff Sharkey625239a2012-09-26 22:03:49 -07006808 * Enables the UI setting to allow the user to specify the global HTTP
6809 * proxy and associated exclusion list.
6810 *
6811 * @hide
6812 */
6813 public static final String SET_GLOBAL_HTTP_PROXY = "set_global_http_proxy";
6814
6815 /**
6816 * Setting for default DNS in case nobody suggests one
6817 *
6818 * @hide
6819 */
6820 public static final String DEFAULT_DNS_SERVER = "default_dns_server";
6821
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006822 /** {@hide} */
6823 public static final String
6824 BLUETOOTH_HEADSET_PRIORITY_PREFIX = "bluetooth_headset_priority_";
6825 /** {@hide} */
6826 public static final String
6827 BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX = "bluetooth_a2dp_sink_priority_";
6828 /** {@hide} */
6829 public static final String
6830 BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX = "bluetooth_input_device_priority_";
Kim Schulz0d376052013-08-22 11:18:02 +02006831 /** {@hide} */
6832 public static final String
6833 BLUETOOTH_MAP_PRIORITY_PREFIX = "bluetooth_map_priority_";
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006834
6835 /**
6836 * Get the key that retrieves a bluetooth headset's priority.
6837 * @hide
6838 */
6839 public static final String getBluetoothHeadsetPriorityKey(String address) {
Elliott Hughescb64d432013-08-02 10:00:44 -07006840 return BLUETOOTH_HEADSET_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006841 }
6842
6843 /**
6844 * Get the key that retrieves a bluetooth a2dp sink's priority.
6845 * @hide
6846 */
6847 public static final String getBluetoothA2dpSinkPriorityKey(String address) {
Elliott Hughescb64d432013-08-02 10:00:44 -07006848 return BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006849 }
6850
6851 /**
6852 * Get the key that retrieves a bluetooth Input Device's priority.
6853 * @hide
6854 */
6855 public static final String getBluetoothInputDevicePriorityKey(String address) {
Elliott Hughescb64d432013-08-02 10:00:44 -07006856 return BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
Jeff Sharkey0ac10282012-10-01 12:50:22 -07006857 }
6858
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006859 /**
Kim Schulz0d376052013-08-22 11:18:02 +02006860 * Get the key that retrieves a bluetooth map priority.
6861 * @hide
6862 */
6863 public static final String getBluetoothMapPriorityKey(String address) {
6864 return BLUETOOTH_MAP_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
6865 }
6866 /**
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006867 * Scaling factor for normal window animations. Setting to 0 will
6868 * disable window animations.
6869 */
6870 public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
6871
6872 /**
6873 * Scaling factor for activity transition animations. Setting to 0 will
6874 * disable window animations.
6875 */
6876 public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
6877
6878 /**
6879 * Scaling factor for Animator-based animations. This affects both the
6880 * start delay and duration of all such animations. Setting to 0 will
6881 * cause animations to end immediately. The default value is 1.
6882 */
6883 public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
6884
6885 /**
6886 * Scaling factor for normal window animations. Setting to 0 will
6887 * disable window animations.
6888 *
6889 * @hide
6890 */
6891 public static final String FANCY_IME_ANIMATIONS = "fancy_ime_animations";
6892
6893 /**
6894 * If 0, the compatibility mode is off for all applications.
6895 * If 1, older applications run under compatibility mode.
6896 * TODO: remove this settings before code freeze (bug/1907571)
6897 * @hide
6898 */
6899 public static final String COMPATIBILITY_MODE = "compatibility_mode";
6900
6901 /**
6902 * CDMA only settings
6903 * Emergency Tone 0 = Off
6904 * 1 = Alert
6905 * 2 = Vibrate
6906 * @hide
6907 */
6908 public static final String EMERGENCY_TONE = "emergency_tone";
6909
6910 /**
6911 * CDMA only settings
6912 * Whether the auto retry is enabled. The value is
6913 * boolean (1 or 0).
6914 * @hide
6915 */
6916 public static final String CALL_AUTO_RETRY = "call_auto_retry";
6917
6918 /**
Sungmin Choie099ab12014-06-09 14:45:51 +09006919 * See RIL_PreferredNetworkType in ril.h
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006920 * @hide
6921 */
6922 public static final String PREFERRED_NETWORK_MODE =
6923 "preferred_network_mode";
6924
6925 /**
Junda Liubbdc1c02014-11-07 11:18:02 -08006926 * Setting to 1 will hide carrier network settings.
6927 * Default is 0.
6928 * @hide
6929 */
6930 public static final String HIDE_CARRIER_NETWORK_SETTINGS =
6931 "hide_carrier_network_settings";
6932
6933 /**
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006934 * Name of an application package to be debugged.
6935 */
6936 public static final String DEBUG_APP = "debug_app";
6937
6938 /**
6939 * If 1, when launching DEBUG_APP it will wait for the debugger before
6940 * starting user code. If 0, it will run normally.
6941 */
6942 public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
6943
6944 /**
6945 * Control whether the process CPU usage meter should be shown.
6946 */
6947 public static final String SHOW_PROCESSES = "show_processes";
6948
6949 /**
Ruchi Kandoi62b8a492014-04-17 18:01:40 -07006950 * If 1 low power mode is enabled.
6951 * @hide
6952 */
6953 public static final String LOW_POWER_MODE = "low_power";
6954
John Spurlockf8f524c2014-06-10 14:47:29 -04006955 /**
6956 * Battery level [1-99] at which low power mode automatically turns on.
Dianne Hackborn14272302014-06-10 23:13:02 -07006957 * If 0, it will not automatically turn on.
John Spurlockf8f524c2014-06-10 14:47:29 -04006958 * @hide
6959 */
6960 public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level";
6961
Ruchi Kandoi62b8a492014-04-17 18:01:40 -07006962 /**
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006963 * If 1, the activity manager will aggressively finish activities and
6964 * processes as soon as they are no longer needed. If 0, the normal
6965 * extended lifetime is used.
6966 */
Dianne Hackborn89ad4562014-08-24 16:45:38 -07006967 public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
Jeff Sharkey6e2bee72012-10-01 13:39:08 -07006968
Christopher Tate66488d62012-10-02 11:58:01 -07006969 /**
Eric Laurent7ee1e4f2012-10-26 18:11:21 -07006970 * Use Dock audio output for media:
6971 * 0 = disabled
6972 * 1 = enabled
6973 * @hide
6974 */
6975 public static final String DOCK_AUDIO_MEDIA_ENABLED = "dock_audio_media_enabled";
6976
6977 /**
Eric Laurent05274f32012-11-29 12:48:18 -08006978 * Persisted safe headphone volume management state by AudioService
6979 * @hide
6980 */
6981 public static final String AUDIO_SAFE_VOLUME_STATE = "audio_safe_volume_state";
6982
6983 /**
Geremy Condraa0735112013-03-26 21:49:26 -07006984 * URL for tzinfo (time zone) updates
6985 * @hide
6986 */
6987 public static final String TZINFO_UPDATE_CONTENT_URL = "tzinfo_content_url";
6988
6989 /**
6990 * URL for tzinfo (time zone) update metadata
6991 * @hide
6992 */
6993 public static final String TZINFO_UPDATE_METADATA_URL = "tzinfo_metadata_url";
6994
6995 /**
6996 * URL for selinux (mandatory access control) updates
6997 * @hide
6998 */
6999 public static final String SELINUX_UPDATE_CONTENT_URL = "selinux_content_url";
7000
7001 /**
7002 * URL for selinux (mandatory access control) update metadata
7003 * @hide
7004 */
7005 public static final String SELINUX_UPDATE_METADATA_URL = "selinux_metadata_url";
7006
7007 /**
7008 * URL for sms short code updates
7009 * @hide
7010 */
7011 public static final String SMS_SHORT_CODES_UPDATE_CONTENT_URL =
7012 "sms_short_codes_content_url";
7013
7014 /**
7015 * URL for sms short code update metadata
7016 * @hide
7017 */
7018 public static final String SMS_SHORT_CODES_UPDATE_METADATA_URL =
7019 "sms_short_codes_metadata_url";
7020
7021 /**
7022 * URL for cert pinlist updates
7023 * @hide
7024 */
7025 public static final String CERT_PIN_UPDATE_CONTENT_URL = "cert_pin_content_url";
7026
7027 /**
7028 * URL for cert pinlist updates
7029 * @hide
7030 */
7031 public static final String CERT_PIN_UPDATE_METADATA_URL = "cert_pin_metadata_url";
7032
Geremy Condra757ee522013-03-29 16:39:45 -07007033 /**
Ben Gruver633dc9b2013-04-04 12:05:49 -07007034 * URL for intent firewall updates
7035 * @hide
7036 */
7037 public static final String INTENT_FIREWALL_UPDATE_CONTENT_URL =
7038 "intent_firewall_content_url";
7039
7040 /**
7041 * URL for intent firewall update metadata
7042 * @hide
7043 */
7044 public static final String INTENT_FIREWALL_UPDATE_METADATA_URL =
7045 "intent_firewall_metadata_url";
7046
7047 /**
Geremy Condra4e7f7e82013-03-26 21:09:01 -07007048 * SELinux enforcement status. If 0, permissive; if 1, enforcing.
7049 * @hide
7050 */
7051 public static final String SELINUX_STATUS = "selinux_status";
7052
Geremy Condraa0735112013-03-26 21:49:26 -07007053 /**
Amith Yamasanid8415f42013-08-07 20:15:10 -07007054 * Developer setting to force RTL layout.
7055 * @hide
7056 */
7057 public static final String DEVELOPMENT_FORCE_RTL = "debug.force_rtl";
7058
7059 /**
Daniel Sandlerdea64622013-09-23 16:05:57 -04007060 * Milliseconds after screen-off after which low battery sounds will be silenced.
7061 *
7062 * If zero, battery sounds will always play.
7063 * Defaults to @integer/def_low_battery_sound_timeout in SettingsProvider.
7064 *
7065 * @hide
7066 */
7067 public static final String LOW_BATTERY_SOUND_TIMEOUT = "low_battery_sound_timeout";
7068
7069 /**
Evan Charltoncc7b0432014-01-14 14:47:11 -08007070 * Milliseconds to wait before bouncing Wi-Fi after settings is restored. Note that after
Dianne Hackborna3fb40d2014-08-12 15:06:50 -07007071 * the caller is done with this, they should call {@link ContentResolver#delete} to
Evan Charltoncc7b0432014-01-14 14:47:11 -08007072 * clean up any value that they may have written.
7073 *
7074 * @hide
7075 */
7076 public static final String WIFI_BOUNCE_DELAY_OVERRIDE_MS = "wifi_bounce_delay_override_ms";
7077
John Spurlockc6d1c602014-01-17 15:22:06 -05007078 /**
7079 * Defines global runtime overrides to window policy.
7080 *
Jorim Jaggib10e33f2015-02-04 21:57:40 +01007081 * See {@link com.android.server.policy.PolicyControl} for value format.
John Spurlockc6d1c602014-01-17 15:22:06 -05007082 *
7083 * @hide
7084 */
7085 public static final String POLICY_CONTROL = "policy_control";
Evan Charltoncc7b0432014-01-14 14:47:11 -08007086
7087 /**
John Spurlockae641c92014-06-30 18:11:40 -04007088 * Defines global zen mode. ZEN_MODE_OFF, ZEN_MODE_IMPORTANT_INTERRUPTIONS,
7089 * or ZEN_MODE_NO_INTERRUPTIONS.
John Spurlocke677d712014-02-13 12:52:19 -05007090 *
7091 * @hide
7092 */
7093 public static final String ZEN_MODE = "zen_mode";
7094
7095 /** @hide */ public static final int ZEN_MODE_OFF = 0;
John Spurlockae641c92014-06-30 18:11:40 -04007096 /** @hide */ public static final int ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1;
7097 /** @hide */ public static final int ZEN_MODE_NO_INTERRUPTIONS = 2;
John Spurlocke677d712014-02-13 12:52:19 -05007098
7099 /** @hide */ public static String zenModeToString(int mode) {
John Spurlockae641c92014-06-30 18:11:40 -04007100 if (mode == ZEN_MODE_IMPORTANT_INTERRUPTIONS) return "ZEN_MODE_IMPORTANT_INTERRUPTIONS";
7101 if (mode == ZEN_MODE_NO_INTERRUPTIONS) return "ZEN_MODE_NO_INTERRUPTIONS";
7102 return "ZEN_MODE_OFF";
John Spurlocke677d712014-02-13 12:52:19 -05007103 }
7104
7105 /**
John Spurlock056c5192014-04-20 21:52:01 -04007106 * Opaque value, changes when persisted zen mode configuration changes.
7107 *
7108 * @hide
7109 */
7110 public static final String ZEN_MODE_CONFIG_ETAG = "zen_mode_config_etag";
7111
7112 /**
Chris Wren7bd241232014-02-28 16:25:05 -05007113 * Defines global heads up toggle. One of HEADS_UP_OFF, HEADS_UP_ON.
7114 *
7115 * @hide
7116 */
Chris Wren10d82df2014-03-01 10:34:51 -05007117 public static final String HEADS_UP_NOTIFICATIONS_ENABLED =
7118 "heads_up_notifications_enabled";
Chris Wren7bd241232014-02-28 16:25:05 -05007119
7120 /** @hide */ public static final int HEADS_UP_OFF = 0;
7121 /** @hide */ public static final int HEADS_UP_ON = 1;
7122
7123 /**
Jerome Poichet147b4d72014-05-12 18:13:27 -07007124 * The name of the device
7125 *
7126 * @hide
7127 */
7128 public static final String DEVICE_NAME = "device_name";
7129
7130 /**
Amith Yamasani1e9c2182014-06-11 17:25:51 -07007131 * Whether it should be possible to create a guest user on the device.
7132 * <p>
7133 * Type: int (0 for disabled, 1 for enabled)
7134 * @hide
7135 */
7136 public static final String GUEST_USER_ENABLED = "guest_user_enabled";
7137
7138 /**
Jeff Davidson56f9f732014-08-14 16:47:23 -07007139 * Whether the NetworkScoringService has been first initialized.
7140 * <p>
7141 * Type: int (0 for false, 1 for true)
7142 * @hide
7143 */
7144 public static final String NETWORK_SCORING_PROVISIONED = "network_scoring_provisioned";
7145
7146 /**
Jim Miller6848dc82014-10-13 18:51:53 -07007147 * Whether the user wants to be prompted for password to decrypt the device on boot.
7148 * This only matters if the storage is encrypted.
7149 * <p>
7150 * Type: int (0 for false, 1 for true)
7151 * @hide
7152 */
7153 public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
7154
7155 /**
Libin.Tang@motorola.com0499bb52014-10-10 14:55:57 -05007156 * Whether the Volte/VT is enabled
7157 * <p>
7158 * Type: int (0 for false, 1 for true)
7159 * @hide
7160 */
Etan Cohene41a9cf2014-10-22 10:50:46 -07007161 public static final String ENHANCED_4G_MODE_ENABLED = "volte_vt_enabled";
Libin.Tang@motorola.com0499bb52014-10-10 14:55:57 -05007162
7163 /**
Etan Cohen7ab0ad12014-11-24 11:18:01 -08007164 * Global override to disable VoLTE (independent of user setting)
7165 * <p>
7166 * Type: int (1 for disable VoLTE, 0 to use user configuration)
7167 * @hide
7168 */
7169 public static final String VOLTE_FEATURE_DISABLED = "volte_feature_disabled";
7170
7171 /**
Amit Mahajan4fea0922014-11-18 12:56:28 -08007172 * Whether user can enable/disable LTE as a preferred network. A carrier might control
7173 * this via gservices, OMA-DM, carrier app, etc.
7174 * <p>
7175 * Type: int (0 for false, 1 for true)
7176 * @hide
7177 */
7178 public static final String LTE_SERVICE_FORCED = "lte_service_forced";
7179
7180 /**
Christopher Tate66488d62012-10-02 11:58:01 -07007181 * Settings to backup. This is here so that it's in the same place as the settings
7182 * keys and easy to update.
7183 *
7184 * These keys may be mentioned in the SETTINGS_TO_BACKUP arrays in System
7185 * and Secure as well. This is because those tables drive both backup and
7186 * restore, and restore needs to properly whitelist keys that used to live
7187 * in those namespaces. The keys will only actually be backed up / restored
7188 * if they are also mentioned in this table (Global.SETTINGS_TO_BACKUP).
7189 *
7190 * NOTE: Settings are backed up and restored in the order they appear
7191 * in this array. If you have one setting depending on another,
7192 * make sure that they are ordered appropriately.
7193 *
7194 * @hide
7195 */
7196 public static final String[] SETTINGS_TO_BACKUP = {
Christopher Tate58f41ec2013-01-11 15:40:36 -08007197 BUGREPORT_IN_POWER_MENU,
Christopher Tate66488d62012-10-02 11:58:01 -07007198 STAY_ON_WHILE_PLUGGED_IN,
Christopher Tate66488d62012-10-02 11:58:01 -07007199 AUTO_TIME,
7200 AUTO_TIME_ZONE,
7201 POWER_SOUNDS_ENABLED,
7202 DOCK_SOUNDS_ENABLED,
7203 USB_MASS_STORAGE_ENABLED,
7204 ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED,
7205 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
7206 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY,
Christopher Tate16eb7cd2012-10-09 15:26:30 -07007207 WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED,
Christopher Tate66488d62012-10-02 11:58:01 -07007208 WIFI_NUM_OPEN_NETWORKS_KEPT,
7209 EMERGENCY_TONE,
7210 CALL_AUTO_RETRY,
Amith Yamasani94005242014-10-31 11:35:13 -07007211 DOCK_AUDIO_MEDIA_ENABLED,
7212 LOW_POWER_MODE_TRIGGER_LEVEL
Christopher Tate66488d62012-10-02 11:58:01 -07007213 };
7214
Christopher Tate06efb532012-08-24 15:29:27 -07007215 // Populated lazily, guarded by class object:
Dianne Hackborn139748f2012-09-24 11:36:57 -07007216 private static NameValueCache sNameValueCache = new NameValueCache(
7217 SYS_PROP_SETTING_VERSION,
7218 CONTENT_URI,
7219 CALL_METHOD_GET_GLOBAL,
7220 CALL_METHOD_PUT_GLOBAL);
Christopher Tate06efb532012-08-24 15:29:27 -07007221
Christopher Tateaa036a22014-05-19 16:33:27 -07007222 // Certain settings have been moved from global to the per-user secure namespace
7223 private static final HashSet<String> MOVED_TO_SECURE;
7224 static {
7225 MOVED_TO_SECURE = new HashSet<String>(1);
7226 MOVED_TO_SECURE.add(Settings.Global.INSTALL_NON_MARKET_APPS);
7227 }
7228
Svetoslav683914b2015-01-15 14:22:26 -08007229 /** @hide */
7230 public static void getMovedToSecureSettings(Set<String> outKeySet) {
7231 outKeySet.addAll(MOVED_TO_SECURE);
7232 }
7233
Christopher Tate06efb532012-08-24 15:29:27 -07007234 /**
7235 * Look up a name in the database.
7236 * @param resolver to access the database with
7237 * @param name to look up in the table
7238 * @return the corresponding value, or null if not present
7239 */
Dianne Hackborn139748f2012-09-24 11:36:57 -07007240 public static String getString(ContentResolver resolver, String name) {
Christopher Tate06efb532012-08-24 15:29:27 -07007241 return getStringForUser(resolver, name, UserHandle.myUserId());
7242 }
7243
7244 /** @hide */
Dianne Hackborn139748f2012-09-24 11:36:57 -07007245 public static String getStringForUser(ContentResolver resolver, String name,
Christopher Tate06efb532012-08-24 15:29:27 -07007246 int userHandle) {
Christopher Tateaa036a22014-05-19 16:33:27 -07007247 if (MOVED_TO_SECURE.contains(name)) {
7248 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global"
7249 + " to android.provider.Settings.Secure, returning read-only value.");
7250 return Secure.getStringForUser(resolver, name, userHandle);
7251 }
Christopher Tate06efb532012-08-24 15:29:27 -07007252 return sNameValueCache.getStringForUser(resolver, name, userHandle);
7253 }
7254
7255 /**
7256 * Store a name/value pair into the database.
7257 * @param resolver to access the database with
7258 * @param name to store
7259 * @param value to associate with the name
7260 * @return true if the value was set, false on database errors
7261 */
7262 public static boolean putString(ContentResolver resolver,
7263 String name, String value) {
7264 return putStringForUser(resolver, name, value, UserHandle.myUserId());
7265 }
7266
7267 /** @hide */
7268 public static boolean putStringForUser(ContentResolver resolver,
7269 String name, String value, int userHandle) {
Christopher Tate06efb532012-08-24 15:29:27 -07007270 if (LOCAL_LOGV) {
7271 Log.v(TAG, "Global.putString(name=" + name + ", value=" + value
7272 + " for " + userHandle);
7273 }
Christopher Tateaa036a22014-05-19 16:33:27 -07007274 // Global and Secure have the same access policy so we can forward writes
7275 if (MOVED_TO_SECURE.contains(name)) {
7276 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global"
7277 + " to android.provider.Settings.Secure, value is unchanged.");
7278 return Secure.putStringForUser(resolver, name, value, userHandle);
7279 }
Christopher Tate06efb532012-08-24 15:29:27 -07007280 return sNameValueCache.putStringForUser(resolver, name, value, userHandle);
7281 }
7282
7283 /**
7284 * Construct the content URI for a particular name/value pair,
7285 * useful for monitoring changes with a ContentObserver.
7286 * @param name to look up in the table
7287 * @return the corresponding content URI, or null if not present
7288 */
7289 public static Uri getUriFor(String name) {
7290 return getUriFor(CONTENT_URI, name);
7291 }
7292
7293 /**
7294 * Convenience function for retrieving a single secure settings value
7295 * as an integer. Note that internally setting values are always
7296 * stored as strings; this function converts the string to an integer
7297 * for you. The default value will be returned if the setting is
7298 * not defined or not an integer.
7299 *
7300 * @param cr The ContentResolver to access.
7301 * @param name The name of the setting to retrieve.
7302 * @param def Value to return if the setting is not defined.
7303 *
7304 * @return The setting's current value, or 'def' if it is not defined
7305 * or not a valid integer.
7306 */
7307 public static int getInt(ContentResolver cr, String name, int def) {
7308 String v = getString(cr, name);
7309 try {
7310 return v != null ? Integer.parseInt(v) : def;
7311 } catch (NumberFormatException e) {
7312 return def;
7313 }
7314 }
7315
7316 /**
7317 * Convenience function for retrieving a single secure settings value
7318 * as an integer. Note that internally setting values are always
7319 * stored as strings; this function converts the string to an integer
7320 * for you.
7321 * <p>
7322 * This version does not take a default value. If the setting has not
7323 * been set, or the string value is not a number,
7324 * it throws {@link SettingNotFoundException}.
7325 *
7326 * @param cr The ContentResolver to access.
7327 * @param name The name of the setting to retrieve.
7328 *
7329 * @throws SettingNotFoundException Thrown if a setting by the given
7330 * name can't be found or the setting value is not an integer.
7331 *
7332 * @return The setting's current value.
7333 */
7334 public static int getInt(ContentResolver cr, String name)
7335 throws SettingNotFoundException {
7336 String v = getString(cr, name);
7337 try {
7338 return Integer.parseInt(v);
7339 } catch (NumberFormatException e) {
7340 throw new SettingNotFoundException(name);
7341 }
7342 }
7343
7344 /**
7345 * Convenience function for updating a single settings value as an
7346 * integer. This will either create a new entry in the table if the
7347 * given name does not exist, or modify the value of the existing row
7348 * with that name. Note that internally setting values are always
7349 * stored as strings, so this function converts the given value to a
7350 * string before storing it.
7351 *
7352 * @param cr The ContentResolver to access.
7353 * @param name The name of the setting to modify.
7354 * @param value The new value for the setting.
7355 * @return true if the value was set, false on database errors
7356 */
7357 public static boolean putInt(ContentResolver cr, String name, int value) {
7358 return putString(cr, name, Integer.toString(value));
7359 }
7360
7361 /**
7362 * Convenience function for retrieving a single secure settings value
7363 * as a {@code long}. Note that internally setting values are always
7364 * stored as strings; this function converts the string to a {@code long}
7365 * for you. The default value will be returned if the setting is
7366 * not defined or not a {@code long}.
7367 *
7368 * @param cr The ContentResolver to access.
7369 * @param name The name of the setting to retrieve.
7370 * @param def Value to return if the setting is not defined.
7371 *
7372 * @return The setting's current value, or 'def' if it is not defined
7373 * or not a valid {@code long}.
7374 */
7375 public static long getLong(ContentResolver cr, String name, long def) {
7376 String valString = getString(cr, name);
7377 long value;
7378 try {
7379 value = valString != null ? Long.parseLong(valString) : def;
7380 } catch (NumberFormatException e) {
7381 value = def;
7382 }
7383 return value;
7384 }
7385
7386 /**
7387 * Convenience function for retrieving a single secure settings value
7388 * as a {@code long}. Note that internally setting values are always
7389 * stored as strings; this function converts the string to a {@code long}
7390 * for you.
7391 * <p>
7392 * This version does not take a default value. If the setting has not
7393 * been set, or the string value is not a number,
7394 * it throws {@link SettingNotFoundException}.
7395 *
7396 * @param cr The ContentResolver to access.
7397 * @param name The name of the setting to retrieve.
7398 *
7399 * @return The setting's current value.
7400 * @throws SettingNotFoundException Thrown if a setting by the given
7401 * name can't be found or the setting value is not an integer.
7402 */
7403 public static long getLong(ContentResolver cr, String name)
7404 throws SettingNotFoundException {
7405 String valString = getString(cr, name);
7406 try {
7407 return Long.parseLong(valString);
7408 } catch (NumberFormatException e) {
7409 throw new SettingNotFoundException(name);
7410 }
7411 }
7412
7413 /**
7414 * Convenience function for updating a secure settings value as a long
7415 * integer. This will either create a new entry in the table if the
7416 * given name does not exist, or modify the value of the existing row
7417 * with that name. Note that internally setting values are always
7418 * stored as strings, so this function converts the given value to a
7419 * string before storing it.
7420 *
7421 * @param cr The ContentResolver to access.
7422 * @param name The name of the setting to modify.
7423 * @param value The new value for the setting.
7424 * @return true if the value was set, false on database errors
7425 */
7426 public static boolean putLong(ContentResolver cr, String name, long value) {
7427 return putString(cr, name, Long.toString(value));
7428 }
7429
7430 /**
7431 * Convenience function for retrieving a single secure settings value
7432 * as a floating point number. Note that internally setting values are
7433 * always stored as strings; this function converts the string to an
7434 * float for you. The default value will be returned if the setting
7435 * is not defined or not a valid float.
7436 *
7437 * @param cr The ContentResolver to access.
7438 * @param name The name of the setting to retrieve.
7439 * @param def Value to return if the setting is not defined.
7440 *
7441 * @return The setting's current value, or 'def' if it is not defined
7442 * or not a valid float.
7443 */
7444 public static float getFloat(ContentResolver cr, String name, float def) {
7445 String v = getString(cr, name);
7446 try {
7447 return v != null ? Float.parseFloat(v) : def;
7448 } catch (NumberFormatException e) {
7449 return def;
7450 }
7451 }
7452
7453 /**
7454 * Convenience function for retrieving a single secure settings value
7455 * as a float. Note that internally setting values are always
7456 * stored as strings; this function converts the string to a float
7457 * for you.
7458 * <p>
7459 * This version does not take a default value. If the setting has not
7460 * been set, or the string value is not a number,
7461 * it throws {@link SettingNotFoundException}.
7462 *
7463 * @param cr The ContentResolver to access.
7464 * @param name The name of the setting to retrieve.
7465 *
7466 * @throws SettingNotFoundException Thrown if a setting by the given
7467 * name can't be found or the setting value is not a float.
7468 *
7469 * @return The setting's current value.
7470 */
7471 public static float getFloat(ContentResolver cr, String name)
7472 throws SettingNotFoundException {
7473 String v = getString(cr, name);
7474 if (v == null) {
7475 throw new SettingNotFoundException(name);
7476 }
7477 try {
7478 return Float.parseFloat(v);
7479 } catch (NumberFormatException e) {
7480 throw new SettingNotFoundException(name);
7481 }
7482 }
7483
7484 /**
7485 * Convenience function for updating a single settings value as a
7486 * floating point number. This will either create a new entry in the
7487 * table if the given name does not exist, or modify the value of the
7488 * existing row with that name. Note that internally setting values
7489 * are always stored as strings, so this function converts the given
7490 * value to a string before storing it.
7491 *
7492 * @param cr The ContentResolver to access.
7493 * @param name The name of the setting to modify.
7494 * @param value The new value for the setting.
7495 * @return true if the value was set, false on database errors
7496 */
7497 public static boolean putFloat(ContentResolver cr, String name, float value) {
7498 return putString(cr, name, Float.toString(value));
7499 }
Wink Savillefb40dd42014-06-12 17:02:31 -07007500
7501
7502 /**
7503 * Subscription to be used for voice call on a multi sim device. The supported values
7504 * are 0 = SUB1, 1 = SUB2 and etc.
7505 * @hide
7506 */
7507 public static final String MULTI_SIM_VOICE_CALL_SUBSCRIPTION = "multi_sim_voice_call";
7508
7509 /**
7510 * Used to provide option to user to select subscription during dial.
7511 * The supported values are 0 = disable or 1 = enable prompt.
7512 * @hide
7513 */
7514 public static final String MULTI_SIM_VOICE_PROMPT = "multi_sim_voice_prompt";
7515
7516 /**
7517 * Subscription to be used for data call on a multi sim device. The supported values
7518 * are 0 = SUB1, 1 = SUB2 and etc.
7519 * @hide
7520 */
7521 public static final String MULTI_SIM_DATA_CALL_SUBSCRIPTION = "multi_sim_data_call";
7522
7523 /**
7524 * Subscription to be used for SMS on a multi sim device. The supported values
7525 * are 0 = SUB1, 1 = SUB2 and etc.
7526 * @hide
7527 */
7528 public static final String MULTI_SIM_SMS_SUBSCRIPTION = "multi_sim_sms";
7529
7530 /**
7531 * Used to provide option to user to select subscription during send SMS.
7532 * The value 1 - enable, 0 - disable
7533 * @hide
7534 */
7535 public static final String MULTI_SIM_SMS_PROMPT = "multi_sim_sms_prompt";
7536
7537
7538
7539 /** User preferred subscriptions setting.
7540 * This holds the details of the user selected subscription from the card and
7541 * the activation status. Each settings string have the coma separated values
7542 * iccId,appType,appId,activationStatus,3gppIndex,3gpp2Index
7543 * @hide
7544 */
7545 public static final String[] MULTI_SIM_USER_PREFERRED_SUBS = {"user_preferred_sub1",
7546 "user_preferred_sub2","user_preferred_sub3"};
Christopher Tate06efb532012-08-24 15:29:27 -07007547 }
7548
7549 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007550 * User-defined bookmarks and shortcuts. The target of each bookmark is an
7551 * Intent URL, allowing it to be either a web page or a particular
7552 * application activity.
7553 *
7554 * @hide
7555 */
7556 public static final class Bookmarks implements BaseColumns
7557 {
7558 private static final String TAG = "Bookmarks";
7559
7560 /**
7561 * The content:// style URL for this table
7562 */
7563 public static final Uri CONTENT_URI =
7564 Uri.parse("content://" + AUTHORITY + "/bookmarks");
7565
7566 /**
7567 * The row ID.
7568 * <p>Type: INTEGER</p>
7569 */
7570 public static final String ID = "_id";
7571
7572 /**
7573 * Descriptive name of the bookmark that can be displayed to the user.
7574 * If this is empty, the title should be resolved at display time (use
7575 * {@link #getTitle(Context, Cursor)} any time you want to display the
7576 * title of a bookmark.)
7577 * <P>
7578 * Type: TEXT
7579 * </P>
7580 */
7581 public static final String TITLE = "title";
7582
7583 /**
7584 * Arbitrary string (displayed to the user) that allows bookmarks to be
7585 * organized into categories. There are some special names for
7586 * standard folders, which all start with '@'. The label displayed for
7587 * the folder changes with the locale (via {@link #getLabelForFolder}) but
7588 * the folder name does not change so you can consistently query for
7589 * the folder regardless of the current locale.
7590 *
7591 * <P>Type: TEXT</P>
7592 *
7593 */
7594 public static final String FOLDER = "folder";
7595
7596 /**
7597 * The Intent URL of the bookmark, describing what it points to. This
7598 * value is given to {@link android.content.Intent#getIntent} to create
7599 * an Intent that can be launched.
7600 * <P>Type: TEXT</P>
7601 */
7602 public static final String INTENT = "intent";
7603
7604 /**
7605 * Optional shortcut character associated with this bookmark.
7606 * <P>Type: INTEGER</P>
7607 */
7608 public static final String SHORTCUT = "shortcut";
7609
7610 /**
7611 * The order in which the bookmark should be displayed
7612 * <P>Type: INTEGER</P>
7613 */
7614 public static final String ORDERING = "ordering";
7615
7616 private static final String[] sIntentProjection = { INTENT };
7617 private static final String[] sShortcutProjection = { ID, SHORTCUT };
7618 private static final String sShortcutSelection = SHORTCUT + "=?";
7619
7620 /**
7621 * Convenience function to retrieve the bookmarked Intent for a
7622 * particular shortcut key.
7623 *
7624 * @param cr The ContentResolver to query.
7625 * @param shortcut The shortcut key.
7626 *
7627 * @return Intent The bookmarked URL, or null if there is no bookmark
7628 * matching the given shortcut.
7629 */
7630 public static Intent getIntentForShortcut(ContentResolver cr, char shortcut)
7631 {
7632 Intent intent = null;
7633
7634 Cursor c = cr.query(CONTENT_URI,
7635 sIntentProjection, sShortcutSelection,
7636 new String[] { String.valueOf((int) shortcut) }, ORDERING);
7637 // Keep trying until we find a valid shortcut
7638 try {
7639 while (intent == null && c.moveToNext()) {
7640 try {
7641 String intentURI = c.getString(c.getColumnIndexOrThrow(INTENT));
Christian Mehlmauera34d2c92010-05-25 19:04:20 +02007642 intent = Intent.parseUri(intentURI, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007643 } catch (java.net.URISyntaxException e) {
7644 // The stored URL is bad... ignore it.
7645 } catch (IllegalArgumentException e) {
7646 // Column not found
Dianne Hackborna33e3f72009-09-29 17:28:24 -07007647 Log.w(TAG, "Intent column not found", e);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007648 }
7649 }
7650 } finally {
7651 if (c != null) c.close();
7652 }
7653
7654 return intent;
7655 }
7656
7657 /**
7658 * Add a new bookmark to the system.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007659 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007660 * @param cr The ContentResolver to query.
7661 * @param intent The desired target of the bookmark.
7662 * @param title Bookmark title that is shown to the user; null if none
7663 * or it should be resolved to the intent's title.
7664 * @param folder Folder in which to place the bookmark; null if none.
7665 * @param shortcut Shortcut that will invoke the bookmark; 0 if none. If
7666 * this is non-zero and there is an existing bookmark entry
7667 * with this same shortcut, then that existing shortcut is
7668 * cleared (the bookmark is not removed).
7669 * @return The unique content URL for the new bookmark entry.
7670 */
7671 public static Uri add(ContentResolver cr,
7672 Intent intent,
7673 String title,
7674 String folder,
7675 char shortcut,
7676 int ordering)
7677 {
7678 // If a shortcut is supplied, and it is already defined for
7679 // another bookmark, then remove the old definition.
7680 if (shortcut != 0) {
Jeff Hamilton7cd51ef2010-05-12 17:30:27 -05007681 cr.delete(CONTENT_URI, sShortcutSelection,
7682 new String[] { String.valueOf((int) shortcut) });
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007683 }
7684
7685 ContentValues values = new ContentValues();
7686 if (title != null) values.put(TITLE, title);
7687 if (folder != null) values.put(FOLDER, folder);
Jean-Baptiste Queru3b9f0a32010-06-21 13:46:59 -07007688 values.put(INTENT, intent.toUri(0));
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007689 if (shortcut != 0) values.put(SHORTCUT, (int) shortcut);
7690 values.put(ORDERING, ordering);
7691 return cr.insert(CONTENT_URI, values);
7692 }
7693
7694 /**
7695 * Return the folder name as it should be displayed to the user. This
7696 * takes care of localizing special folders.
7697 *
7698 * @param r Resources object for current locale; only need access to
7699 * system resources.
7700 * @param folder The value found in the {@link #FOLDER} column.
7701 *
7702 * @return CharSequence The label for this folder that should be shown
7703 * to the user.
7704 */
7705 public static CharSequence getLabelForFolder(Resources r, String folder) {
7706 return folder;
7707 }
7708
7709 /**
7710 * Return the title as it should be displayed to the user. This takes
7711 * care of localizing bookmarks that point to activities.
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007712 *
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007713 * @param context A context.
7714 * @param cursor A cursor pointing to the row whose title should be
7715 * returned. The cursor must contain at least the {@link #TITLE}
7716 * and {@link #INTENT} columns.
7717 * @return A title that is localized and can be displayed to the user,
7718 * or the empty string if one could not be found.
7719 */
7720 public static CharSequence getTitle(Context context, Cursor cursor) {
7721 int titleColumn = cursor.getColumnIndex(TITLE);
7722 int intentColumn = cursor.getColumnIndex(INTENT);
7723 if (titleColumn == -1 || intentColumn == -1) {
7724 throw new IllegalArgumentException(
7725 "The cursor must contain the TITLE and INTENT columns.");
7726 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007727
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007728 String title = cursor.getString(titleColumn);
7729 if (!TextUtils.isEmpty(title)) {
7730 return title;
7731 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007732
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007733 String intentUri = cursor.getString(intentColumn);
7734 if (TextUtils.isEmpty(intentUri)) {
7735 return "";
7736 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007737
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007738 Intent intent;
7739 try {
Christian Mehlmauera34d2c92010-05-25 19:04:20 +02007740 intent = Intent.parseUri(intentUri, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007741 } catch (URISyntaxException e) {
7742 return "";
7743 }
Jaikumar Ganesh9bfbfbd2009-05-15 12:05:56 -07007744
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007745 PackageManager packageManager = context.getPackageManager();
7746 ResolveInfo info = packageManager.resolveActivity(intent, 0);
7747 return info != null ? info.loadLabel(packageManager) : "";
7748 }
7749 }
7750
7751 /**
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08007752 * Returns the device ID that we should use when connecting to the mobile gtalk server.
7753 * This is a string like "android-0x1242", where the hex string is the Android ID obtained
7754 * from the GoogleLoginService.
7755 *
7756 * @param androidId The Android ID for this device.
7757 * @return The device ID that should be used when connecting to the mobile gtalk server.
7758 * @hide
7759 */
7760 public static String getGTalkDeviceId(long androidId) {
7761 return "android-" + Long.toHexString(androidId);
7762 }
7763}