1 /* 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 17 package android.provider; 18 19 import android.annotation.SdkConstant; 20 import android.annotation.SdkConstant.SdkConstantType; 21 import android.annotation.SystemApi; 22 import android.app.SearchManager; 23 import android.app.WallpaperManager; 24 import android.content.ComponentName; 25 import android.content.ContentResolver; 26 import android.content.ContentValues; 27 import android.content.Context; 28 import android.content.IContentProvider; 29 import android.content.Intent; 30 import android.content.pm.ActivityInfo; 31 import android.content.pm.PackageManager; 32 import android.content.pm.ResolveInfo; 33 import android.content.res.Configuration; 34 import android.content.res.Resources; 35 import android.database.Cursor; 36 import android.database.SQLException; 37 import android.location.LocationManager; 38 import android.net.ConnectivityManager; 39 import android.net.Uri; 40 import android.net.wifi.WifiManager; 41 import android.os.BatteryManager; 42 import android.os.Bundle; 43 import android.os.DropBoxManager; 44 import android.os.IBinder; 45 import android.os.Process; 46 import android.os.RemoteException; 47 import android.os.ServiceManager; 48 import android.os.SystemProperties; 49 import android.os.UserHandle; 50 import android.os.Build.VERSION_CODES; 51 import android.speech.tts.TextToSpeech; 52 import android.text.TextUtils; 53 import android.util.AndroidException; 54 import android.util.Log; 55 56 import com.android.internal.widget.ILockSettings; 57 58 import java.net.URISyntaxException; 59 import java.util.HashMap; 60 import java.util.HashSet; 61 import java.util.Locale; 62 63 /** 64 * The Settings provider contains global system-level device preferences. 65 */ 66 public final class Settings { 67 68 // Intent actions for Settings 69 70 /** 71 * Activity Action: Show system settings. 72 * <p> 73 * Input: Nothing. 74 * <p> 75 * Output: Nothing. 76 */ 77 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 78 public static final String ACTION_SETTINGS = "android.settings.SETTINGS"; 79 80 /** 81 * Activity Action: Show settings to allow configuration of APNs. 82 * <p> 83 * Input: Nothing. 84 * <p> 85 * Output: Nothing. 86 */ 87 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 88 public static final String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS"; 89 90 /** 91 * Activity Action: Show settings to allow configuration of current location 92 * sources. 93 * <p> 94 * In some cases, a matching Activity may not exist, so ensure you 95 * safeguard against this. 96 * <p> 97 * Input: Nothing. 98 * <p> 99 * Output: Nothing. 100 */ 101 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 102 public static final String ACTION_LOCATION_SOURCE_SETTINGS = 103 "android.settings.LOCATION_SOURCE_SETTINGS"; 104 105 /** 106 * Activity Action: Show settings to allow configuration of wireless controls 107 * such as Wi-Fi, Bluetooth and Mobile networks. 108 * <p> 109 * In some cases, a matching Activity may not exist, so ensure you 110 * safeguard against this. 111 * <p> 112 * Input: Nothing. 113 * <p> 114 * Output: Nothing. 115 */ 116 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 117 public static final String ACTION_WIRELESS_SETTINGS = 118 "android.settings.WIRELESS_SETTINGS"; 119 120 /** 121 * Activity Action: Show settings to allow entering/exiting airplane mode. 122 * <p> 123 * In some cases, a matching Activity may not exist, so ensure you 124 * safeguard against this. 125 * <p> 126 * Input: Nothing. 127 * <p> 128 * Output: Nothing. 129 */ 130 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 131 public static final String ACTION_AIRPLANE_MODE_SETTINGS = 132 "android.settings.AIRPLANE_MODE_SETTINGS"; 133 134 /** 135 * @hide 136 * Activity Action: Modify Airplane mode settings using the users voice. 137 * <p> 138 * In some cases, a matching Activity may not exist, so ensure you safeguard against this. 139 * <p> 140 * This intent MUST be started using 141 * {@link android.service.voice.VoiceInteractionSession#startVoiceActivity 142 * startVoiceActivity}. 143 * <p> 144 * To tell which state airplane mode should be set to, add the 145 * {@link #EXTRA_AIRPLANE_MODE_ENABLED} extra to this Intent with the state specified. 146 * If there is no extra in this Intent, no changes will be made. 147 * <p> 148 * The activity should verify that 149 * {@link android.app.Activity#isVoiceInteraction isVoiceInteraction} returns true before 150 * modifying the setting. 151 * <p> 152 * Input: Nothing. 153 * <p> 154 * Output: Nothing. 155 */ 156 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 157 @SystemApi 158 public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE = 159 "android.settings.VOICE_CONTROL_AIRPLANE_MODE"; 160 161 /** 162 * Activity Action: Show settings for accessibility modules. 163 * <p> 164 * In some cases, a matching Activity may not exist, so ensure you 165 * safeguard against this. 166 * <p> 167 * Input: Nothing. 168 * <p> 169 * Output: Nothing. 170 */ 171 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 172 public static final String ACTION_ACCESSIBILITY_SETTINGS = 173 "android.settings.ACCESSIBILITY_SETTINGS"; 174 175 /** 176 * Activity Action: Show settings to control access to usage information. 177 * <p> 178 * In some cases, a matching Activity may not exist, so ensure you 179 * safeguard against this. 180 * <p> 181 * Input: Nothing. 182 * <p> 183 * Output: Nothing. 184 */ 185 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 186 public static final String ACTION_USAGE_ACCESS_SETTINGS = 187 "android.settings.USAGE_ACCESS_SETTINGS"; 188 189 /** 190 * Activity Action: Show settings to allow configuration of security and 191 * location privacy. 192 * <p> 193 * In some cases, a matching Activity may not exist, so ensure you 194 * safeguard against this. 195 * <p> 196 * Input: Nothing. 197 * <p> 198 * Output: Nothing. 199 */ 200 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 201 public static final String ACTION_SECURITY_SETTINGS = 202 "android.settings.SECURITY_SETTINGS"; 203 204 /** 205 * Activity Action: Show trusted credentials settings, opening to the user tab, 206 * to allow management of installed credentials. 207 * <p> 208 * In some cases, a matching Activity may not exist, so ensure you 209 * safeguard against this. 210 * <p> 211 * Input: Nothing. 212 * <p> 213 * Output: Nothing. 214 * @hide 215 */ 216 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 217 public static final String ACTION_TRUSTED_CREDENTIALS_USER = 218 "com.android.settings.TRUSTED_CREDENTIALS_USER"; 219 220 /** 221 * Activity Action: Show dialog explaining that an installed CA cert may enable 222 * monitoring of encrypted network traffic. 223 * <p> 224 * In some cases, a matching Activity may not exist, so ensure you 225 * safeguard against this. 226 * <p> 227 * Input: Nothing. 228 * <p> 229 * Output: Nothing. 230 * @hide 231 */ 232 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 233 public static final String ACTION_MONITORING_CERT_INFO = 234 "com.android.settings.MONITORING_CERT_INFO"; 235 236 /** 237 * Activity Action: Show settings to allow configuration of privacy options. 238 * <p> 239 * In some cases, a matching Activity may not exist, so ensure you 240 * safeguard against this. 241 * <p> 242 * Input: Nothing. 243 * <p> 244 * Output: Nothing. 245 */ 246 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 247 public static final String ACTION_PRIVACY_SETTINGS = 248 "android.settings.PRIVACY_SETTINGS"; 249 250 /** 251 * Activity Action: Show settings to allow configuration of Wi-Fi. 252 * <p> 253 * In some cases, a matching Activity may not exist, so ensure you 254 * safeguard against this. 255 * <p> 256 * Input: Nothing. 257 * <p> 258 * Output: Nothing. 259 260 */ 261 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 262 public static final String ACTION_WIFI_SETTINGS = 263 "android.settings.WIFI_SETTINGS"; 264 265 /** 266 * Activity Action: Show settings to allow configuration of a static IP 267 * address for Wi-Fi. 268 * <p> 269 * In some cases, a matching Activity may not exist, so ensure you safeguard 270 * against this. 271 * <p> 272 * Input: Nothing. 273 * <p> 274 * Output: Nothing. 275 */ 276 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 277 public static final String ACTION_WIFI_IP_SETTINGS = 278 "android.settings.WIFI_IP_SETTINGS"; 279 280 /** 281 * Activity Action: Show settings to allow configuration of Bluetooth. 282 * <p> 283 * In some cases, a matching Activity may not exist, so ensure you 284 * safeguard against this. 285 * <p> 286 * Input: Nothing. 287 * <p> 288 * Output: Nothing. 289 */ 290 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 291 public static final String ACTION_BLUETOOTH_SETTINGS = 292 "android.settings.BLUETOOTH_SETTINGS"; 293 294 /** 295 * Activity Action: Show settings to allow configuration of Wifi Displays. 296 * <p> 297 * In some cases, a matching Activity may not exist, so ensure you 298 * safeguard against this. 299 * <p> 300 * Input: Nothing. 301 * <p> 302 * Output: Nothing. 303 * @hide 304 */ 305 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 306 public static final String ACTION_WIFI_DISPLAY_SETTINGS = 307 "android.settings.WIFI_DISPLAY_SETTINGS"; 308 309 /** 310 * Activity Action: Show settings to allow configuration of 311 * cast endpoints. 312 * <p> 313 * In some cases, a matching Activity may not exist, so ensure you 314 * safeguard against this. 315 * <p> 316 * Input: Nothing. 317 * <p> 318 * Output: Nothing. 319 */ 320 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 321 public static final String ACTION_CAST_SETTINGS = 322 "android.settings.CAST_SETTINGS"; 323 324 /** 325 * Activity Action: Show settings to allow configuration of date and time. 326 * <p> 327 * In some cases, a matching Activity may not exist, so ensure you 328 * safeguard against this. 329 * <p> 330 * Input: Nothing. 331 * <p> 332 * Output: Nothing. 333 */ 334 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 335 public static final String ACTION_DATE_SETTINGS = 336 "android.settings.DATE_SETTINGS"; 337 338 /** 339 * Activity Action: Show settings to allow configuration of sound and volume. 340 * <p> 341 * In some cases, a matching Activity may not exist, so ensure you 342 * safeguard against this. 343 * <p> 344 * Input: Nothing. 345 * <p> 346 * Output: Nothing. 347 */ 348 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 349 public static final String ACTION_SOUND_SETTINGS = 350 "android.settings.SOUND_SETTINGS"; 351 352 /** 353 * Activity Action: Show settings to allow configuration of display. 354 * <p> 355 * In some cases, a matching Activity may not exist, so ensure you 356 * safeguard against this. 357 * <p> 358 * Input: Nothing. 359 * <p> 360 * Output: Nothing. 361 */ 362 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 363 public static final String ACTION_DISPLAY_SETTINGS = 364 "android.settings.DISPLAY_SETTINGS"; 365 366 /** 367 * Activity Action: Show settings to allow configuration of locale. 368 * <p> 369 * In some cases, a matching Activity may not exist, so ensure you 370 * safeguard against this. 371 * <p> 372 * Input: Nothing. 373 * <p> 374 * Output: Nothing. 375 */ 376 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 377 public static final String ACTION_LOCALE_SETTINGS = 378 "android.settings.LOCALE_SETTINGS"; 379 380 /** 381 * Activity Action: Show settings to configure input methods, in particular 382 * allowing the user to enable input methods. 383 * <p> 384 * In some cases, a matching Activity may not exist, so ensure you 385 * safeguard against this. 386 * <p> 387 * Input: Nothing. 388 * <p> 389 * Output: Nothing. 390 */ 391 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 392 public static final String ACTION_VOICE_INPUT_SETTINGS = 393 "android.settings.VOICE_INPUT_SETTINGS"; 394 395 /** 396 * Activity Action: Show settings to configure input methods, in particular 397 * allowing the user to enable input methods. 398 * <p> 399 * In some cases, a matching Activity may not exist, so ensure you 400 * safeguard against this. 401 * <p> 402 * Input: Nothing. 403 * <p> 404 * Output: Nothing. 405 */ 406 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 407 public static final String ACTION_INPUT_METHOD_SETTINGS = 408 "android.settings.INPUT_METHOD_SETTINGS"; 409 410 /** 411 * Activity Action: Show settings to enable/disable input method subtypes. 412 * <p> 413 * In some cases, a matching Activity may not exist, so ensure you 414 * safeguard against this. 415 * <p> 416 * To tell which input method's subtypes are displayed in the settings, add 417 * {@link #EXTRA_INPUT_METHOD_ID} extra to this Intent with the input method id. 418 * If there is no extra in this Intent, subtypes from all installed input methods 419 * will be displayed in the settings. 420 * 421 * @see android.view.inputmethod.InputMethodInfo#getId 422 * <p> 423 * Input: Nothing. 424 * <p> 425 * Output: Nothing. 426 */ 427 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 428 public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS = 429 "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS"; 430 431 /** 432 * Activity Action: Show a dialog to select input method. 433 * <p> 434 * In some cases, a matching Activity may not exist, so ensure you 435 * safeguard against this. 436 * <p> 437 * Input: Nothing. 438 * <p> 439 * Output: Nothing. 440 * @hide 441 */ 442 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 443 public static final String ACTION_SHOW_INPUT_METHOD_PICKER = 444 "android.settings.SHOW_INPUT_METHOD_PICKER"; 445 446 /** 447 * Activity Action: Show settings to manage the user input dictionary. 448 * <p> 449 * Starting with {@link android.os.Build.VERSION_CODES#KITKAT}, 450 * it is guaranteed there will always be an appropriate implementation for this Intent action. 451 * In prior releases of the platform this was optional, so ensure you safeguard against it. 452 * <p> 453 * Input: Nothing. 454 * <p> 455 * Output: Nothing. 456 */ 457 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 458 public static final String ACTION_USER_DICTIONARY_SETTINGS = 459 "android.settings.USER_DICTIONARY_SETTINGS"; 460 461 /** 462 * Activity Action: Adds a word to the user dictionary. 463 * <p> 464 * In some cases, a matching Activity may not exist, so ensure you 465 * safeguard against this. 466 * <p> 467 * Input: An extra with key <code>word</code> that contains the word 468 * that should be added to the dictionary. 469 * <p> 470 * Output: Nothing. 471 * 472 * @hide 473 */ 474 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 475 public static final String ACTION_USER_DICTIONARY_INSERT = 476 "com.android.settings.USER_DICTIONARY_INSERT"; 477 478 /** 479 * Activity Action: Show settings to allow configuration of application-related settings. 480 * <p> 481 * In some cases, a matching Activity may not exist, so ensure you 482 * safeguard against this. 483 * <p> 484 * Input: Nothing. 485 * <p> 486 * Output: Nothing. 487 */ 488 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 489 public static final String ACTION_APPLICATION_SETTINGS = 490 "android.settings.APPLICATION_SETTINGS"; 491 492 /** 493 * Activity Action: Show settings to allow configuration of application 494 * development-related settings. As of 495 * {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} this action is 496 * a required part of the platform. 497 * <p> 498 * Input: Nothing. 499 * <p> 500 * Output: Nothing. 501 */ 502 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 503 public static final String ACTION_APPLICATION_DEVELOPMENT_SETTINGS = 504 "android.settings.APPLICATION_DEVELOPMENT_SETTINGS"; 505 506 /** 507 * Activity Action: Show settings to allow configuration of quick launch shortcuts. 508 * <p> 509 * In some cases, a matching Activity may not exist, so ensure you 510 * safeguard against this. 511 * <p> 512 * Input: Nothing. 513 * <p> 514 * Output: Nothing. 515 */ 516 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 517 public static final String ACTION_QUICK_LAUNCH_SETTINGS = 518 "android.settings.QUICK_LAUNCH_SETTINGS"; 519 520 /** 521 * Activity Action: Show settings to manage installed applications. 522 * <p> 523 * In some cases, a matching Activity may not exist, so ensure you 524 * safeguard against this. 525 * <p> 526 * Input: Nothing. 527 * <p> 528 * Output: Nothing. 529 */ 530 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 531 public static final String ACTION_MANAGE_APPLICATIONS_SETTINGS = 532 "android.settings.MANAGE_APPLICATIONS_SETTINGS"; 533 534 /** 535 * Activity Action: Show settings to manage all applications. 536 * <p> 537 * In some cases, a matching Activity may not exist, so ensure you 538 * safeguard against this. 539 * <p> 540 * Input: Nothing. 541 * <p> 542 * Output: Nothing. 543 */ 544 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 545 public static final String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = 546 "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS"; 547 548 /** 549 * Activity Action: Show screen of details about a particular application. 550 * <p> 551 * In some cases, a matching Activity may not exist, so ensure you 552 * safeguard against this. 553 * <p> 554 * Input: The Intent's data URI specifies the application package name 555 * to be shown, with the "package" scheme. That is "package:com.my.app". 556 * <p> 557 * Output: Nothing. 558 */ 559 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 560 public static final String ACTION_APPLICATION_DETAILS_SETTINGS = 561 "android.settings.APPLICATION_DETAILS_SETTINGS"; 562 563 /** 564 * @hide 565 * Activity Action: Show the "app ops" settings screen. 566 * <p> 567 * Input: Nothing. 568 * <p> 569 * Output: Nothing. 570 */ 571 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 572 public static final String ACTION_APP_OPS_SETTINGS = 573 "android.settings.APP_OPS_SETTINGS"; 574 575 /** 576 * Activity Action: Show settings for system update functionality. 577 * <p> 578 * In some cases, a matching Activity may not exist, so ensure you 579 * safeguard against this. 580 * <p> 581 * Input: Nothing. 582 * <p> 583 * Output: Nothing. 584 * 585 * @hide 586 */ 587 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 588 public static final String ACTION_SYSTEM_UPDATE_SETTINGS = 589 "android.settings.SYSTEM_UPDATE_SETTINGS"; 590 591 /** 592 * Activity Action: Show settings to allow configuration of sync settings. 593 * <p> 594 * In some cases, a matching Activity may not exist, so ensure you 595 * safeguard against this. 596 * <p> 597 * The account types available to add via the add account button may be restricted by adding an 598 * {@link #EXTRA_AUTHORITIES} extra to this Intent with one or more syncable content provider's 599 * authorities. Only account types which can sync with that content provider will be offered to 600 * the user. 601 * <p> 602 * Input: Nothing. 603 * <p> 604 * Output: Nothing. 605 */ 606 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 607 public static final String ACTION_SYNC_SETTINGS = 608 "android.settings.SYNC_SETTINGS"; 609 610 /** 611 * Activity Action: Show add account screen for creating a new account. 612 * <p> 613 * In some cases, a matching Activity may not exist, so ensure you 614 * safeguard against this. 615 * <p> 616 * The account types available to add may be restricted by adding an {@link #EXTRA_AUTHORITIES} 617 * extra to the Intent with one or more syncable content provider's authorities. Only account 618 * types which can sync with that content provider will be offered to the user. 619 * <p> 620 * Account types can also be filtered by adding an {@link #EXTRA_ACCOUNT_TYPES} extra to the 621 * Intent with one or more account types. 622 * <p> 623 * Input: Nothing. 624 * <p> 625 * Output: Nothing. 626 */ 627 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 628 public static final String ACTION_ADD_ACCOUNT = 629 "android.settings.ADD_ACCOUNT_SETTINGS"; 630 631 /** 632 * Activity Action: Show settings for selecting the network operator. 633 * <p> 634 * In some cases, a matching Activity may not exist, so ensure you 635 * safeguard against this. 636 * <p> 637 * Input: Nothing. 638 * <p> 639 * Output: Nothing. 640 */ 641 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 642 public static final String ACTION_NETWORK_OPERATOR_SETTINGS = 643 "android.settings.NETWORK_OPERATOR_SETTINGS"; 644 645 /** 646 * Activity Action: Show settings for selection of 2G/3G. 647 * <p> 648 * In some cases, a matching Activity may not exist, so ensure you 649 * safeguard against this. 650 * <p> 651 * Input: Nothing. 652 * <p> 653 * Output: Nothing. 654 */ 655 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 656 public static final String ACTION_DATA_ROAMING_SETTINGS = 657 "android.settings.DATA_ROAMING_SETTINGS"; 658 659 /** 660 * Activity Action: Show settings for internal storage. 661 * <p> 662 * In some cases, a matching Activity may not exist, so ensure you 663 * safeguard against this. 664 * <p> 665 * Input: Nothing. 666 * <p> 667 * Output: Nothing. 668 */ 669 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 670 public static final String ACTION_INTERNAL_STORAGE_SETTINGS = 671 "android.settings.INTERNAL_STORAGE_SETTINGS"; 672 /** 673 * Activity Action: Show settings for memory card storage. 674 * <p> 675 * In some cases, a matching Activity may not exist, so ensure you 676 * safeguard against this. 677 * <p> 678 * Input: Nothing. 679 * <p> 680 * Output: Nothing. 681 */ 682 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 683 public static final String ACTION_MEMORY_CARD_SETTINGS = 684 "android.settings.MEMORY_CARD_SETTINGS"; 685 686 /** 687 * Activity Action: Show settings for global search. 688 * <p> 689 * In some cases, a matching Activity may not exist, so ensure you 690 * safeguard against this. 691 * <p> 692 * Input: Nothing. 693 * <p> 694 * Output: Nothing 695 */ 696 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 697 public static final String ACTION_SEARCH_SETTINGS = 698 "android.search.action.SEARCH_SETTINGS"; 699 700 /** 701 * Activity Action: Show general device information settings (serial 702 * number, software version, phone number, etc.). 703 * <p> 704 * In some cases, a matching Activity may not exist, so ensure you 705 * safeguard against this. 706 * <p> 707 * Input: Nothing. 708 * <p> 709 * Output: Nothing 710 */ 711 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 712 public static final String ACTION_DEVICE_INFO_SETTINGS = 713 "android.settings.DEVICE_INFO_SETTINGS"; 714 715 /** 716 * Activity Action: Show NFC settings. 717 * <p> 718 * This shows UI that allows NFC to be turned on or off. 719 * <p> 720 * In some cases, a matching Activity may not exist, so ensure you 721 * safeguard against this. 722 * <p> 723 * Input: Nothing. 724 * <p> 725 * Output: Nothing 726 * @see android.nfc.NfcAdapter#isEnabled() 727 */ 728 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 729 public static final String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS"; 730 731 /** 732 * Activity Action: Show NFC Sharing settings. 733 * <p> 734 * This shows UI that allows NDEF Push (Android Beam) to be turned on or 735 * off. 736 * <p> 737 * In some cases, a matching Activity may not exist, so ensure you 738 * safeguard against this. 739 * <p> 740 * Input: Nothing. 741 * <p> 742 * Output: Nothing 743 * @see android.nfc.NfcAdapter#isNdefPushEnabled() 744 */ 745 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 746 public static final String ACTION_NFCSHARING_SETTINGS = 747 "android.settings.NFCSHARING_SETTINGS"; 748 749 /** 750 * Activity Action: Show NFC Tap & Pay settings 751 * <p> 752 * This shows UI that allows the user to configure Tap&Pay 753 * settings. 754 * <p> 755 * In some cases, a matching Activity may not exist, so ensure you 756 * safeguard against this. 757 * <p> 758 * Input: Nothing. 759 * <p> 760 * Output: Nothing 761 */ 762 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 763 public static final String ACTION_NFC_PAYMENT_SETTINGS = 764 "android.settings.NFC_PAYMENT_SETTINGS"; 765 766 /** 767 * Activity Action: Show Daydream settings. 768 * <p> 769 * In some cases, a matching Activity may not exist, so ensure you 770 * safeguard against this. 771 * <p> 772 * Input: Nothing. 773 * <p> 774 * Output: Nothing. 775 * @see android.service.dreams.DreamService 776 */ 777 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 778 public static final String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS"; 779 780 /** 781 * Activity Action: Show Notification listener settings. 782 * <p> 783 * In some cases, a matching Activity may not exist, so ensure you 784 * safeguard against this. 785 * <p> 786 * Input: Nothing. 787 * <p> 788 * Output: Nothing. 789 * @see android.service.notification.NotificationListenerService 790 */ 791 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 792 public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS 793 = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"; 794 795 /** 796 * @hide 797 */ 798 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 799 public static final String ACTION_CONDITION_PROVIDER_SETTINGS 800 = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS"; 801 802 /** 803 * Activity Action: Show settings for video captioning. 804 * <p> 805 * In some cases, a matching Activity may not exist, so ensure you safeguard 806 * against this. 807 * <p> 808 * Input: Nothing. 809 * <p> 810 * Output: Nothing. 811 */ 812 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 813 public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS"; 814 815 /** 816 * Activity Action: Show the top level print settings. 817 * <p> 818 * In some cases, a matching Activity may not exist, so ensure you 819 * safeguard against this. 820 * <p> 821 * Input: Nothing. 822 * <p> 823 * Output: Nothing. 824 */ 825 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 826 public static final String ACTION_PRINT_SETTINGS = 827 "android.settings.ACTION_PRINT_SETTINGS"; 828 829 /** 830 * Activity Action: Show Zen Mode configuration settings. 831 * 832 * @hide 833 */ 834 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 835 public static final String ACTION_ZEN_MODE_SETTINGS = "android.settings.ZEN_MODE_SETTINGS"; 836 837 /** 838 * Activity Action: Show the regulatory information screen for the device. 839 * <p> 840 * In some cases, a matching Activity may not exist, so ensure you safeguard 841 * against this. 842 * <p> 843 * Input: Nothing. 844 * <p> 845 * Output: Nothing. 846 */ 847 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 848 public static final String 849 ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO"; 850 851 /** 852 * Activity Action: Show Device Name Settings. 853 * <p> 854 * In some cases, a matching Activity may not exist, so ensure you safeguard 855 * against this. 856 * 857 * @hide 858 */ 859 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 860 public static final String DEVICE_NAME_SETTINGS = "android.settings.DEVICE_NAME"; 861 862 /** 863 * Activity Action: Show pairing settings. 864 * <p> 865 * In some cases, a matching Activity may not exist, so ensure you safeguard 866 * against this. 867 * 868 * @hide 869 */ 870 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 871 public static final String ACTION_PAIRING_SETTINGS = "android.settings.PAIRING_SETTINGS"; 872 873 /** 874 * Activity Action: Show battery saver settings. 875 * <p> 876 * In some cases, a matching Activity may not exist, so ensure you safeguard 877 * against this. 878 */ 879 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 880 public static final String ACTION_BATTERY_SAVER_SETTINGS 881 = "android.settings.BATTERY_SAVER_SETTINGS"; 882 883 /** 884 * Activity Action: Show Home selection settings. If there are multiple activities 885 * that can satisfy the {@link Intent#CATEGORY_HOME} intent, this screen allows you 886 * to pick your preferred activity. 887 */ 888 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 889 public static final String ACTION_HOME_SETTINGS 890 = "android.settings.HOME_SETTINGS"; 891 892 /** 893 * Activity Action: Show notification settings. 894 * 895 * @hide 896 */ 897 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 898 public static final String ACTION_NOTIFICATION_SETTINGS 899 = "android.settings.NOTIFICATION_SETTINGS"; 900 901 /** 902 * Activity Action: Show notification settings for a single app. 903 * 904 * @hide 905 */ 906 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 907 public static final String ACTION_APP_NOTIFICATION_SETTINGS 908 = "android.settings.APP_NOTIFICATION_SETTINGS"; 909 910 /** 911 * Activity Action: Show notification redaction settings. 912 * 913 * @hide 914 */ 915 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 916 public static final String ACTION_APP_NOTIFICATION_REDACTION 917 = "android.settings.ACTION_APP_NOTIFICATION_REDACTION"; 918 919 /** @hide */ public static final String EXTRA_APP_UID = "app_uid"; 920 /** @hide */ public static final String EXTRA_APP_PACKAGE = "app_package"; 921 922 // End of Intent actions for Settings 923 924 /** 925 * @hide - Private call() method on SettingsProvider to read from 'system' table. 926 */ 927 public static final String CALL_METHOD_GET_SYSTEM = "GET_system"; 928 929 /** 930 * @hide - Private call() method on SettingsProvider to read from 'secure' table. 931 */ 932 public static final String CALL_METHOD_GET_SECURE = "GET_secure"; 933 934 /** 935 * @hide - Private call() method on SettingsProvider to read from 'global' table. 936 */ 937 public static final String CALL_METHOD_GET_GLOBAL = "GET_global"; 938 939 /** 940 * @hide - User handle argument extra to the fast-path call()-based requests 941 */ 942 public static final String CALL_METHOD_USER_KEY = "_user"; 943 944 /** @hide - Private call() method to write to 'system' table */ 945 public static final String CALL_METHOD_PUT_SYSTEM = "PUT_system"; 946 947 /** @hide - Private call() method to write to 'secure' table */ 948 public static final String CALL_METHOD_PUT_SECURE = "PUT_secure"; 949 950 /** @hide - Private call() method to write to 'global' table */ 951 public static final String CALL_METHOD_PUT_GLOBAL= "PUT_global"; 952 953 /** 954 * Activity Extra: Limit available options in launched activity based on the given authority. 955 * <p> 956 * This can be passed as an extra field in an Activity Intent with one or more syncable content 957 * provider's authorities as a String[]. This field is used by some intents to alter the 958 * behavior of the called activity. 959 * <p> 960 * Example: The {@link #ACTION_ADD_ACCOUNT} intent restricts the account types available based 961 * on the authority given. 962 */ 963 public static final String EXTRA_AUTHORITIES = "authorities"; 964 965 /** 966 * Activity Extra: Limit available options in launched activity based on the given account 967 * types. 968 * <p> 969 * This can be passed as an extra field in an Activity Intent with one or more account types 970 * as a String[]. This field is used by some intents to alter the behavior of the called 971 * activity. 972 * <p> 973 * Example: The {@link #ACTION_ADD_ACCOUNT} intent restricts the account types to the specified 974 * list. 975 */ 976 public static final String EXTRA_ACCOUNT_TYPES = "account_types"; 977 978 public static final String EXTRA_INPUT_METHOD_ID = "input_method_id"; 979 980 /** 981 * Activity Extra: The device identifier to act upon. 982 * <p> 983 * This can be passed as an extra field in an Activity Intent with a single 984 * InputDeviceIdentifier. This field is used by some activities to jump straight into the 985 * settings for the given device. 986 * <p> 987 * Example: The {@link #ACTION_INPUT_METHOD_SETTINGS} intent opens the keyboard layout 988 * dialog for the given device. 989 * @hide 990 */ 991 public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier"; 992 993 /** 994 * @hide 995 * Activity Extra: Enable or disable Airplane Mode. 996 * <p> 997 * This can be passed as an extra field to the {@link #ACTION_VOICE_CONTROL_AIRPLANE_MODE} 998 * intent as a boolean. 999 */ 1000 @SystemApi 1001 public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled"; 1002 1003 private static final String JID_RESOURCE_PREFIX = "android"; 1004 1005 public static final String AUTHORITY = "settings"; 1006 1007 private static final String TAG = "Settings"; 1008 private static final boolean LOCAL_LOGV = false; 1009 1010 // Lock ensures that when enabling/disabling the master location switch, we don't end up 1011 // with a partial enable/disable state in multi-threaded situations. 1012 private static final Object mLocationSettingsLock = new Object(); 1013 1014 public static class SettingNotFoundException extends AndroidException { SettingNotFoundException(String msg)1015 public SettingNotFoundException(String msg) { 1016 super(msg); 1017 } 1018 } 1019 1020 /** 1021 * Common base for tables of name/value settings. 1022 */ 1023 public static class NameValueTable implements BaseColumns { 1024 public static final String NAME = "name"; 1025 public static final String VALUE = "value"; 1026 putString(ContentResolver resolver, Uri uri, String name, String value)1027 protected static boolean putString(ContentResolver resolver, Uri uri, 1028 String name, String value) { 1029 // The database will take care of replacing duplicates. 1030 try { 1031 ContentValues values = new ContentValues(); 1032 values.put(NAME, name); 1033 values.put(VALUE, value); 1034 resolver.insert(uri, values); 1035 return true; 1036 } catch (SQLException e) { 1037 Log.w(TAG, "Can't set key " + name + " in " + uri, e); 1038 return false; 1039 } 1040 } 1041 getUriFor(Uri uri, String name)1042 public static Uri getUriFor(Uri uri, String name) { 1043 return Uri.withAppendedPath(uri, name); 1044 } 1045 } 1046 1047 // Thread-safe. 1048 private static class NameValueCache { 1049 private final String mVersionSystemProperty; 1050 private final Uri mUri; 1051 1052 private static final String[] SELECT_VALUE = 1053 new String[] { Settings.NameValueTable.VALUE }; 1054 private static final String NAME_EQ_PLACEHOLDER = "name=?"; 1055 1056 // Must synchronize on 'this' to access mValues and mValuesVersion. 1057 private final HashMap<String, String> mValues = new HashMap<String, String>(); 1058 private long mValuesVersion = 0; 1059 1060 // Initially null; set lazily and held forever. Synchronized on 'this'. 1061 private IContentProvider mContentProvider = null; 1062 1063 // The method we'll call (or null, to not use) on the provider 1064 // for the fast path of retrieving settings. 1065 private final String mCallGetCommand; 1066 private final String mCallSetCommand; 1067 NameValueCache(String versionSystemProperty, Uri uri, String getCommand, String setCommand)1068 public NameValueCache(String versionSystemProperty, Uri uri, 1069 String getCommand, String setCommand) { 1070 mVersionSystemProperty = versionSystemProperty; 1071 mUri = uri; 1072 mCallGetCommand = getCommand; 1073 mCallSetCommand = setCommand; 1074 } 1075 lazyGetProvider(ContentResolver cr)1076 private IContentProvider lazyGetProvider(ContentResolver cr) { 1077 IContentProvider cp = null; 1078 synchronized (this) { 1079 cp = mContentProvider; 1080 if (cp == null) { 1081 cp = mContentProvider = cr.acquireProvider(mUri.getAuthority()); 1082 } 1083 } 1084 return cp; 1085 } 1086 putStringForUser(ContentResolver cr, String name, String value, final int userHandle)1087 public boolean putStringForUser(ContentResolver cr, String name, String value, 1088 final int userHandle) { 1089 try { 1090 Bundle arg = new Bundle(); 1091 arg.putString(Settings.NameValueTable.VALUE, value); 1092 arg.putInt(CALL_METHOD_USER_KEY, userHandle); 1093 IContentProvider cp = lazyGetProvider(cr); 1094 cp.call(cr.getPackageName(), mCallSetCommand, name, arg); 1095 } catch (RemoteException e) { 1096 Log.w(TAG, "Can't set key " + name + " in " + mUri, e); 1097 return false; 1098 } 1099 return true; 1100 } 1101 getStringForUser(ContentResolver cr, String name, final int userHandle)1102 public String getStringForUser(ContentResolver cr, String name, final int userHandle) { 1103 final boolean isSelf = (userHandle == UserHandle.myUserId()); 1104 if (isSelf) { 1105 long newValuesVersion = SystemProperties.getLong(mVersionSystemProperty, 0); 1106 1107 // Our own user's settings data uses a client-side cache 1108 synchronized (this) { 1109 if (mValuesVersion != newValuesVersion) { 1110 if (LOCAL_LOGV || false) { 1111 Log.v(TAG, "invalidate [" + mUri.getLastPathSegment() + "]: current " 1112 + newValuesVersion + " != cached " + mValuesVersion); 1113 } 1114 1115 mValues.clear(); 1116 mValuesVersion = newValuesVersion; 1117 } 1118 1119 if (mValues.containsKey(name)) { 1120 return mValues.get(name); // Could be null, that's OK -- negative caching 1121 } 1122 } 1123 } else { 1124 if (LOCAL_LOGV) Log.v(TAG, "get setting for user " + userHandle 1125 + " by user " + UserHandle.myUserId() + " so skipping cache"); 1126 } 1127 1128 IContentProvider cp = lazyGetProvider(cr); 1129 1130 // Try the fast path first, not using query(). If this 1131 // fails (alternate Settings provider that doesn't support 1132 // this interface?) then we fall back to the query/table 1133 // interface. 1134 if (mCallGetCommand != null) { 1135 try { 1136 Bundle args = null; 1137 if (!isSelf) { 1138 args = new Bundle(); 1139 args.putInt(CALL_METHOD_USER_KEY, userHandle); 1140 } 1141 Bundle b = cp.call(cr.getPackageName(), mCallGetCommand, name, args); 1142 if (b != null) { 1143 String value = b.getPairValue(); 1144 // Don't update our cache for reads of other users' data 1145 if (isSelf) { 1146 synchronized (this) { 1147 mValues.put(name, value); 1148 } 1149 } else { 1150 if (LOCAL_LOGV) Log.i(TAG, "call-query of user " + userHandle 1151 + " by " + UserHandle.myUserId() 1152 + " so not updating cache"); 1153 } 1154 return value; 1155 } 1156 // If the response Bundle is null, we fall through 1157 // to the query interface below. 1158 } catch (RemoteException e) { 1159 // Not supported by the remote side? Fall through 1160 // to query(). 1161 } 1162 } 1163 1164 Cursor c = null; 1165 try { 1166 c = cp.query(cr.getPackageName(), mUri, SELECT_VALUE, NAME_EQ_PLACEHOLDER, 1167 new String[]{name}, null, null); 1168 if (c == null) { 1169 Log.w(TAG, "Can't get key " + name + " from " + mUri); 1170 return null; 1171 } 1172 1173 String value = c.moveToNext() ? c.getString(0) : null; 1174 synchronized (this) { 1175 mValues.put(name, value); 1176 } 1177 if (LOCAL_LOGV) { 1178 Log.v(TAG, "cache miss [" + mUri.getLastPathSegment() + "]: " + 1179 name + " = " + (value == null ? "(null)" : value)); 1180 } 1181 return value; 1182 } catch (RemoteException e) { 1183 Log.w(TAG, "Can't get key " + name + " from " + mUri, e); 1184 return null; // Return null, but don't cache it. 1185 } finally { 1186 if (c != null) c.close(); 1187 } 1188 } 1189 } 1190 1191 /** 1192 * System settings, containing miscellaneous system preferences. This 1193 * table holds simple name/value pairs. There are convenience 1194 * functions for accessing individual settings entries. 1195 */ 1196 public static final class System extends NameValueTable { 1197 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_system_version"; 1198 1199 /** 1200 * The content:// style URL for this table 1201 */ 1202 public static final Uri CONTENT_URI = 1203 Uri.parse("content://" + AUTHORITY + "/system"); 1204 1205 private static final NameValueCache sNameValueCache = new NameValueCache( 1206 SYS_PROP_SETTING_VERSION, 1207 CONTENT_URI, 1208 CALL_METHOD_GET_SYSTEM, 1209 CALL_METHOD_PUT_SYSTEM); 1210 1211 private static final HashSet<String> MOVED_TO_SECURE; 1212 static { 1213 MOVED_TO_SECURE = new HashSet<String>(30); 1214 MOVED_TO_SECURE.add(Secure.ANDROID_ID); 1215 MOVED_TO_SECURE.add(Secure.HTTP_PROXY); 1216 MOVED_TO_SECURE.add(Secure.LOCATION_PROVIDERS_ALLOWED); 1217 MOVED_TO_SECURE.add(Secure.LOCK_BIOMETRIC_WEAK_FLAGS); 1218 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_ENABLED); 1219 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_VISIBLE); 1220 MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); 1221 MOVED_TO_SECURE.add(Secure.LOGGING_ID); 1222 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_ENABLED); 1223 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_LAST_UPDATE); 1224 MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_REDIRECT_URL); 1225 MOVED_TO_SECURE.add(Secure.SETTINGS_CLASSNAME); 1226 MOVED_TO_SECURE.add(Secure.USE_GOOGLE_MAIL); 1227 MOVED_TO_SECURE.add(Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON); 1228 MOVED_TO_SECURE.add(Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY); 1229 MOVED_TO_SECURE.add(Secure.WIFI_NUM_OPEN_NETWORKS_KEPT); 1230 MOVED_TO_SECURE.add(Secure.WIFI_ON); 1231 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE); 1232 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_AP_COUNT); 1233 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS); 1234 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED); 1235 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS); 1236 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT); 1237 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_MAX_AP_CHECKS); 1238 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_ON); 1239 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_COUNT); 1240 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_DELAY_MS); 1241 MOVED_TO_SECURE.add(Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS); 1242 1243 // At one time in System, then Global, but now back in Secure 1244 MOVED_TO_SECURE.add(Secure.INSTALL_NON_MARKET_APPS); 1245 } 1246 1247 private static final HashSet<String> MOVED_TO_GLOBAL; 1248 private static final HashSet<String> MOVED_TO_SECURE_THEN_GLOBAL; 1249 static { 1250 MOVED_TO_GLOBAL = new HashSet<String>(); 1251 MOVED_TO_SECURE_THEN_GLOBAL = new HashSet<String>(); 1252 1253 // these were originally in system but migrated to secure in the past, 1254 // so are duplicated in the Secure.* namespace 1255 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.ADB_ENABLED); 1256 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.BLUETOOTH_ON); 1257 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DATA_ROAMING); 1258 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DEVICE_PROVISIONED); 1259 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.USB_MASS_STORAGE_ENABLED); 1260 MOVED_TO_SECURE_THEN_GLOBAL.add(Global.HTTP_PROXY); 1261 1262 // these are moving directly from system to global 1263 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_ON); 1264 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_RADIOS); 1265 MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS); 1266 MOVED_TO_GLOBAL.add(Settings.Global.AUTO_TIME); 1267 MOVED_TO_GLOBAL.add(Settings.Global.AUTO_TIME_ZONE); 1268 MOVED_TO_GLOBAL.add(Settings.Global.CAR_DOCK_SOUND); 1269 MOVED_TO_GLOBAL.add(Settings.Global.CAR_UNDOCK_SOUND); 1270 MOVED_TO_GLOBAL.add(Settings.Global.DESK_DOCK_SOUND); 1271 MOVED_TO_GLOBAL.add(Settings.Global.DESK_UNDOCK_SOUND); 1272 MOVED_TO_GLOBAL.add(Settings.Global.DOCK_SOUNDS_ENABLED); 1273 MOVED_TO_GLOBAL.add(Settings.Global.LOCK_SOUND); 1274 MOVED_TO_GLOBAL.add(Settings.Global.UNLOCK_SOUND); 1275 MOVED_TO_GLOBAL.add(Settings.Global.LOW_BATTERY_SOUND); 1276 MOVED_TO_GLOBAL.add(Settings.Global.POWER_SOUNDS_ENABLED); 1277 MOVED_TO_GLOBAL.add(Settings.Global.STAY_ON_WHILE_PLUGGED_IN); 1278 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SLEEP_POLICY); 1279 MOVED_TO_GLOBAL.add(Settings.Global.MODE_RINGER); 1280 MOVED_TO_GLOBAL.add(Settings.Global.WINDOW_ANIMATION_SCALE); 1281 MOVED_TO_GLOBAL.add(Settings.Global.TRANSITION_ANIMATION_SCALE); 1282 MOVED_TO_GLOBAL.add(Settings.Global.ANIMATOR_DURATION_SCALE); 1283 MOVED_TO_GLOBAL.add(Settings.Global.FANCY_IME_ANIMATIONS); 1284 MOVED_TO_GLOBAL.add(Settings.Global.COMPATIBILITY_MODE); 1285 MOVED_TO_GLOBAL.add(Settings.Global.EMERGENCY_TONE); 1286 MOVED_TO_GLOBAL.add(Settings.Global.CALL_AUTO_RETRY); 1287 MOVED_TO_GLOBAL.add(Settings.Global.DEBUG_APP); 1288 MOVED_TO_GLOBAL.add(Settings.Global.WAIT_FOR_DEBUGGER); 1289 MOVED_TO_GLOBAL.add(Settings.Global.SHOW_PROCESSES); 1290 MOVED_TO_GLOBAL.add(Settings.Global.ALWAYS_FINISH_ACTIVITIES); 1291 MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_CONTENT_URL); 1292 MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_METADATA_URL); 1293 MOVED_TO_GLOBAL.add(Settings.Global.SELINUX_UPDATE_CONTENT_URL); 1294 MOVED_TO_GLOBAL.add(Settings.Global.SELINUX_UPDATE_METADATA_URL); 1295 MOVED_TO_GLOBAL.add(Settings.Global.SMS_SHORT_CODES_UPDATE_CONTENT_URL); 1296 MOVED_TO_GLOBAL.add(Settings.Global.SMS_SHORT_CODES_UPDATE_METADATA_URL); 1297 MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_CONTENT_URL); 1298 MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_METADATA_URL); 1299 } 1300 1301 /** @hide */ getMovedKeys(HashSet<String> outKeySet)1302 public static void getMovedKeys(HashSet<String> outKeySet) { 1303 outKeySet.addAll(MOVED_TO_GLOBAL); 1304 outKeySet.addAll(MOVED_TO_SECURE_THEN_GLOBAL); 1305 } 1306 1307 /** @hide */ getNonLegacyMovedKeys(HashSet<String> outKeySet)1308 public static void getNonLegacyMovedKeys(HashSet<String> outKeySet) { 1309 outKeySet.addAll(MOVED_TO_GLOBAL); 1310 } 1311 1312 /** 1313 * Look up a name in the database. 1314 * @param resolver to access the database with 1315 * @param name to look up in the table 1316 * @return the corresponding value, or null if not present 1317 */ getString(ContentResolver resolver, String name)1318 public static String getString(ContentResolver resolver, String name) { 1319 return getStringForUser(resolver, name, UserHandle.myUserId()); 1320 } 1321 1322 /** @hide */ getStringForUser(ContentResolver resolver, String name, int userHandle)1323 public static String getStringForUser(ContentResolver resolver, String name, 1324 int userHandle) { 1325 if (MOVED_TO_SECURE.contains(name)) { 1326 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 1327 + " to android.provider.Settings.Secure, returning read-only value."); 1328 return Secure.getStringForUser(resolver, name, userHandle); 1329 } 1330 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) { 1331 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 1332 + " to android.provider.Settings.Global, returning read-only value."); 1333 return Global.getStringForUser(resolver, name, userHandle); 1334 } 1335 return sNameValueCache.getStringForUser(resolver, name, userHandle); 1336 } 1337 1338 /** 1339 * Store a name/value pair into the database. 1340 * @param resolver to access the database with 1341 * @param name to store 1342 * @param value to associate with the name 1343 * @return true if the value was set, false on database errors 1344 */ putString(ContentResolver resolver, String name, String value)1345 public static boolean putString(ContentResolver resolver, String name, String value) { 1346 return putStringForUser(resolver, name, value, UserHandle.myUserId()); 1347 } 1348 1349 /** @hide */ putStringForUser(ContentResolver resolver, String name, String value, int userHandle)1350 public static boolean putStringForUser(ContentResolver resolver, String name, String value, 1351 int userHandle) { 1352 if (MOVED_TO_SECURE.contains(name)) { 1353 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 1354 + " to android.provider.Settings.Secure, value is unchanged."); 1355 return false; 1356 } 1357 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) { 1358 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 1359 + " to android.provider.Settings.Global, value is unchanged."); 1360 return false; 1361 } 1362 return sNameValueCache.putStringForUser(resolver, name, value, userHandle); 1363 } 1364 1365 /** 1366 * Construct the content URI for a particular name/value pair, 1367 * useful for monitoring changes with a ContentObserver. 1368 * @param name to look up in the table 1369 * @return the corresponding content URI, or null if not present 1370 */ getUriFor(String name)1371 public static Uri getUriFor(String name) { 1372 if (MOVED_TO_SECURE.contains(name)) { 1373 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 1374 + " to android.provider.Settings.Secure, returning Secure URI."); 1375 return Secure.getUriFor(Secure.CONTENT_URI, name); 1376 } 1377 if (MOVED_TO_GLOBAL.contains(name) || MOVED_TO_SECURE_THEN_GLOBAL.contains(name)) { 1378 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 1379 + " to android.provider.Settings.Global, returning read-only global URI."); 1380 return Global.getUriFor(Global.CONTENT_URI, name); 1381 } 1382 return getUriFor(CONTENT_URI, name); 1383 } 1384 1385 /** 1386 * Convenience function for retrieving a single system settings value 1387 * as an integer. Note that internally setting values are always 1388 * stored as strings; this function converts the string to an integer 1389 * for you. The default value will be returned if the setting is 1390 * not defined or not an integer. 1391 * 1392 * @param cr The ContentResolver to access. 1393 * @param name The name of the setting to retrieve. 1394 * @param def Value to return if the setting is not defined. 1395 * 1396 * @return The setting's current value, or 'def' if it is not defined 1397 * or not a valid integer. 1398 */ getInt(ContentResolver cr, String name, int def)1399 public static int getInt(ContentResolver cr, String name, int def) { 1400 return getIntForUser(cr, name, def, UserHandle.myUserId()); 1401 } 1402 1403 /** @hide */ getIntForUser(ContentResolver cr, String name, int def, int userHandle)1404 public static int getIntForUser(ContentResolver cr, String name, int def, int userHandle) { 1405 String v = getStringForUser(cr, name, userHandle); 1406 try { 1407 return v != null ? Integer.parseInt(v) : def; 1408 } catch (NumberFormatException e) { 1409 return def; 1410 } 1411 } 1412 1413 /** 1414 * Convenience function for retrieving a single system settings value 1415 * as an integer. Note that internally setting values are always 1416 * stored as strings; this function converts the string to an integer 1417 * for you. 1418 * <p> 1419 * This version does not take a default value. If the setting has not 1420 * been set, or the string value is not a number, 1421 * it throws {@link SettingNotFoundException}. 1422 * 1423 * @param cr The ContentResolver to access. 1424 * @param name The name of the setting to retrieve. 1425 * 1426 * @throws SettingNotFoundException Thrown if a setting by the given 1427 * name can't be found or the setting value is not an integer. 1428 * 1429 * @return The setting's current value. 1430 */ getInt(ContentResolver cr, String name)1431 public static int getInt(ContentResolver cr, String name) 1432 throws SettingNotFoundException { 1433 return getIntForUser(cr, name, UserHandle.myUserId()); 1434 } 1435 1436 /** @hide */ getIntForUser(ContentResolver cr, String name, int userHandle)1437 public static int getIntForUser(ContentResolver cr, String name, int userHandle) 1438 throws SettingNotFoundException { 1439 String v = getStringForUser(cr, name, userHandle); 1440 try { 1441 return Integer.parseInt(v); 1442 } catch (NumberFormatException e) { 1443 throw new SettingNotFoundException(name); 1444 } 1445 } 1446 1447 /** 1448 * Convenience function for updating a single settings value as an 1449 * integer. This will either create a new entry in the table if the 1450 * given name does not exist, or modify the value of the existing row 1451 * with that name. Note that internally setting values are always 1452 * stored as strings, so this function converts the given value to a 1453 * string before storing it. 1454 * 1455 * @param cr The ContentResolver to access. 1456 * @param name The name of the setting to modify. 1457 * @param value The new value for the setting. 1458 * @return true if the value was set, false on database errors 1459 */ putInt(ContentResolver cr, String name, int value)1460 public static boolean putInt(ContentResolver cr, String name, int value) { 1461 return putIntForUser(cr, name, value, UserHandle.myUserId()); 1462 } 1463 1464 /** @hide */ putIntForUser(ContentResolver cr, String name, int value, int userHandle)1465 public static boolean putIntForUser(ContentResolver cr, String name, int value, 1466 int userHandle) { 1467 return putStringForUser(cr, name, Integer.toString(value), userHandle); 1468 } 1469 1470 /** 1471 * Convenience function for retrieving a single system settings value 1472 * as a {@code long}. Note that internally setting values are always 1473 * stored as strings; this function converts the string to a {@code long} 1474 * for you. The default value will be returned if the setting is 1475 * not defined or not a {@code long}. 1476 * 1477 * @param cr The ContentResolver to access. 1478 * @param name The name of the setting to retrieve. 1479 * @param def Value to return if the setting is not defined. 1480 * 1481 * @return The setting's current value, or 'def' if it is not defined 1482 * or not a valid {@code long}. 1483 */ getLong(ContentResolver cr, String name, long def)1484 public static long getLong(ContentResolver cr, String name, long def) { 1485 return getLongForUser(cr, name, def, UserHandle.myUserId()); 1486 } 1487 1488 /** @hide */ getLongForUser(ContentResolver cr, String name, long def, int userHandle)1489 public static long getLongForUser(ContentResolver cr, String name, long def, 1490 int userHandle) { 1491 String valString = getStringForUser(cr, name, userHandle); 1492 long value; 1493 try { 1494 value = valString != null ? Long.parseLong(valString) : def; 1495 } catch (NumberFormatException e) { 1496 value = def; 1497 } 1498 return value; 1499 } 1500 1501 /** 1502 * Convenience function for retrieving a single system settings value 1503 * as a {@code long}. Note that internally setting values are always 1504 * stored as strings; this function converts the string to a {@code long} 1505 * for you. 1506 * <p> 1507 * This version does not take a default value. If the setting has not 1508 * been set, or the string value is not a number, 1509 * it throws {@link SettingNotFoundException}. 1510 * 1511 * @param cr The ContentResolver to access. 1512 * @param name The name of the setting to retrieve. 1513 * 1514 * @return The setting's current value. 1515 * @throws SettingNotFoundException Thrown if a setting by the given 1516 * name can't be found or the setting value is not an integer. 1517 */ getLong(ContentResolver cr, String name)1518 public static long getLong(ContentResolver cr, String name) 1519 throws SettingNotFoundException { 1520 return getLongForUser(cr, name, UserHandle.myUserId()); 1521 } 1522 1523 /** @hide */ getLongForUser(ContentResolver cr, String name, int userHandle)1524 public static long getLongForUser(ContentResolver cr, String name, int userHandle) 1525 throws SettingNotFoundException { 1526 String valString = getStringForUser(cr, name, userHandle); 1527 try { 1528 return Long.parseLong(valString); 1529 } catch (NumberFormatException e) { 1530 throw new SettingNotFoundException(name); 1531 } 1532 } 1533 1534 /** 1535 * Convenience function for updating a single settings value as a long 1536 * integer. This will either create a new entry in the table if the 1537 * given name does not exist, or modify the value of the existing row 1538 * with that name. Note that internally setting values are always 1539 * stored as strings, so this function converts the given value to a 1540 * string before storing it. 1541 * 1542 * @param cr The ContentResolver to access. 1543 * @param name The name of the setting to modify. 1544 * @param value The new value for the setting. 1545 * @return true if the value was set, false on database errors 1546 */ putLong(ContentResolver cr, String name, long value)1547 public static boolean putLong(ContentResolver cr, String name, long value) { 1548 return putLongForUser(cr, name, value, UserHandle.myUserId()); 1549 } 1550 1551 /** @hide */ putLongForUser(ContentResolver cr, String name, long value, int userHandle)1552 public static boolean putLongForUser(ContentResolver cr, String name, long value, 1553 int userHandle) { 1554 return putStringForUser(cr, name, Long.toString(value), userHandle); 1555 } 1556 1557 /** 1558 * Convenience function for retrieving a single system settings value 1559 * as a floating point number. Note that internally setting values are 1560 * always stored as strings; this function converts the string to an 1561 * float for you. The default value will be returned if the setting 1562 * is not defined or not a valid float. 1563 * 1564 * @param cr The ContentResolver to access. 1565 * @param name The name of the setting to retrieve. 1566 * @param def Value to return if the setting is not defined. 1567 * 1568 * @return The setting's current value, or 'def' if it is not defined 1569 * or not a valid float. 1570 */ getFloat(ContentResolver cr, String name, float def)1571 public static float getFloat(ContentResolver cr, String name, float def) { 1572 return getFloatForUser(cr, name, def, UserHandle.myUserId()); 1573 } 1574 1575 /** @hide */ getFloatForUser(ContentResolver cr, String name, float def, int userHandle)1576 public static float getFloatForUser(ContentResolver cr, String name, float def, 1577 int userHandle) { 1578 String v = getStringForUser(cr, name, userHandle); 1579 try { 1580 return v != null ? Float.parseFloat(v) : def; 1581 } catch (NumberFormatException e) { 1582 return def; 1583 } 1584 } 1585 1586 /** 1587 * Convenience function for retrieving a single system settings value 1588 * as a float. Note that internally setting values are always 1589 * stored as strings; this function converts the string to a float 1590 * for you. 1591 * <p> 1592 * This version does not take a default value. If the setting has not 1593 * been set, or the string value is not a number, 1594 * it throws {@link SettingNotFoundException}. 1595 * 1596 * @param cr The ContentResolver to access. 1597 * @param name The name of the setting to retrieve. 1598 * 1599 * @throws SettingNotFoundException Thrown if a setting by the given 1600 * name can't be found or the setting value is not a float. 1601 * 1602 * @return The setting's current value. 1603 */ getFloat(ContentResolver cr, String name)1604 public static float getFloat(ContentResolver cr, String name) 1605 throws SettingNotFoundException { 1606 return getFloatForUser(cr, name, UserHandle.myUserId()); 1607 } 1608 1609 /** @hide */ getFloatForUser(ContentResolver cr, String name, int userHandle)1610 public static float getFloatForUser(ContentResolver cr, String name, int userHandle) 1611 throws SettingNotFoundException { 1612 String v = getStringForUser(cr, name, userHandle); 1613 if (v == null) { 1614 throw new SettingNotFoundException(name); 1615 } 1616 try { 1617 return Float.parseFloat(v); 1618 } catch (NumberFormatException e) { 1619 throw new SettingNotFoundException(name); 1620 } 1621 } 1622 1623 /** 1624 * Convenience function for updating a single settings value as a 1625 * floating point number. This will either create a new entry in the 1626 * table if the given name does not exist, or modify the value of the 1627 * existing row with that name. Note that internally setting values 1628 * are always stored as strings, so this function converts the given 1629 * value to a string before storing it. 1630 * 1631 * @param cr The ContentResolver to access. 1632 * @param name The name of the setting to modify. 1633 * @param value The new value for the setting. 1634 * @return true if the value was set, false on database errors 1635 */ putFloat(ContentResolver cr, String name, float value)1636 public static boolean putFloat(ContentResolver cr, String name, float value) { 1637 return putFloatForUser(cr, name, value, UserHandle.myUserId()); 1638 } 1639 1640 /** @hide */ putFloatForUser(ContentResolver cr, String name, float value, int userHandle)1641 public static boolean putFloatForUser(ContentResolver cr, String name, float value, 1642 int userHandle) { 1643 return putStringForUser(cr, name, Float.toString(value), userHandle); 1644 } 1645 1646 /** 1647 * Convenience function to read all of the current 1648 * configuration-related settings into a 1649 * {@link Configuration} object. 1650 * 1651 * @param cr The ContentResolver to access. 1652 * @param outConfig Where to place the configuration settings. 1653 */ getConfiguration(ContentResolver cr, Configuration outConfig)1654 public static void getConfiguration(ContentResolver cr, Configuration outConfig) { 1655 getConfigurationForUser(cr, outConfig, UserHandle.myUserId()); 1656 } 1657 1658 /** @hide */ getConfigurationForUser(ContentResolver cr, Configuration outConfig, int userHandle)1659 public static void getConfigurationForUser(ContentResolver cr, Configuration outConfig, 1660 int userHandle) { 1661 outConfig.fontScale = Settings.System.getFloatForUser( 1662 cr, FONT_SCALE, outConfig.fontScale, userHandle); 1663 if (outConfig.fontScale < 0) { 1664 outConfig.fontScale = 1; 1665 } 1666 } 1667 1668 /** 1669 * @hide Erase the fields in the Configuration that should be applied 1670 * by the settings. 1671 */ clearConfiguration(Configuration inoutConfig)1672 public static void clearConfiguration(Configuration inoutConfig) { 1673 inoutConfig.fontScale = 0; 1674 } 1675 1676 /** 1677 * Convenience function to write a batch of configuration-related 1678 * settings from a {@link Configuration} object. 1679 * 1680 * @param cr The ContentResolver to access. 1681 * @param config The settings to write. 1682 * @return true if the values were set, false on database errors 1683 */ putConfiguration(ContentResolver cr, Configuration config)1684 public static boolean putConfiguration(ContentResolver cr, Configuration config) { 1685 return putConfigurationForUser(cr, config, UserHandle.myUserId()); 1686 } 1687 1688 /** @hide */ putConfigurationForUser(ContentResolver cr, Configuration config, int userHandle)1689 public static boolean putConfigurationForUser(ContentResolver cr, Configuration config, 1690 int userHandle) { 1691 return Settings.System.putFloatForUser(cr, FONT_SCALE, config.fontScale, userHandle); 1692 } 1693 1694 /** @hide */ hasInterestingConfigurationChanges(int changes)1695 public static boolean hasInterestingConfigurationChanges(int changes) { 1696 return (changes&ActivityInfo.CONFIG_FONT_SCALE) != 0; 1697 } 1698 1699 /** @deprecated - Do not use */ 1700 @Deprecated getShowGTalkServiceStatus(ContentResolver cr)1701 public static boolean getShowGTalkServiceStatus(ContentResolver cr) { 1702 return getShowGTalkServiceStatusForUser(cr, UserHandle.myUserId()); 1703 } 1704 1705 /** 1706 * @hide 1707 * @deprecated - Do not use 1708 */ getShowGTalkServiceStatusForUser(ContentResolver cr, int userHandle)1709 public static boolean getShowGTalkServiceStatusForUser(ContentResolver cr, 1710 int userHandle) { 1711 return getIntForUser(cr, SHOW_GTALK_SERVICE_STATUS, 0, userHandle) != 0; 1712 } 1713 1714 /** @deprecated - Do not use */ 1715 @Deprecated setShowGTalkServiceStatus(ContentResolver cr, boolean flag)1716 public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) { 1717 setShowGTalkServiceStatusForUser(cr, flag, UserHandle.myUserId()); 1718 } 1719 1720 /** 1721 * @hide 1722 * @deprecated - Do not use 1723 */ 1724 @Deprecated setShowGTalkServiceStatusForUser(ContentResolver cr, boolean flag, int userHandle)1725 public static void setShowGTalkServiceStatusForUser(ContentResolver cr, boolean flag, 1726 int userHandle) { 1727 putIntForUser(cr, SHOW_GTALK_SERVICE_STATUS, flag ? 1 : 0, userHandle); 1728 } 1729 1730 /** 1731 * @deprecated Use {@link android.provider.Settings.Global#STAY_ON_WHILE_PLUGGED_IN} instead 1732 */ 1733 @Deprecated 1734 public static final String STAY_ON_WHILE_PLUGGED_IN = Global.STAY_ON_WHILE_PLUGGED_IN; 1735 1736 /** 1737 * What happens when the user presses the end call button if they're not 1738 * on a call.<br/> 1739 * <b>Values:</b><br/> 1740 * 0 - The end button does nothing.<br/> 1741 * 1 - The end button goes to the home screen.<br/> 1742 * 2 - The end button puts the device to sleep and locks the keyguard.<br/> 1743 * 3 - The end button goes to the home screen. If the user is already on the 1744 * home screen, it puts the device to sleep. 1745 */ 1746 public static final String END_BUTTON_BEHAVIOR = "end_button_behavior"; 1747 1748 /** 1749 * END_BUTTON_BEHAVIOR value for "go home". 1750 * @hide 1751 */ 1752 public static final int END_BUTTON_BEHAVIOR_HOME = 0x1; 1753 1754 /** 1755 * END_BUTTON_BEHAVIOR value for "go to sleep". 1756 * @hide 1757 */ 1758 public static final int END_BUTTON_BEHAVIOR_SLEEP = 0x2; 1759 1760 /** 1761 * END_BUTTON_BEHAVIOR default value. 1762 * @hide 1763 */ 1764 public static final int END_BUTTON_BEHAVIOR_DEFAULT = END_BUTTON_BEHAVIOR_SLEEP; 1765 1766 /** 1767 * Is advanced settings mode turned on. 0 == no, 1 == yes 1768 * @hide 1769 */ 1770 public static final String ADVANCED_SETTINGS = "advanced_settings"; 1771 1772 /** 1773 * ADVANCED_SETTINGS default value. 1774 * @hide 1775 */ 1776 public static final int ADVANCED_SETTINGS_DEFAULT = 0; 1777 1778 /** 1779 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_ON} instead 1780 */ 1781 @Deprecated 1782 public static final String AIRPLANE_MODE_ON = Global.AIRPLANE_MODE_ON; 1783 1784 /** 1785 * @deprecated Use {@link android.provider.Settings.Global#RADIO_BLUETOOTH} instead 1786 */ 1787 @Deprecated 1788 public static final String RADIO_BLUETOOTH = Global.RADIO_BLUETOOTH; 1789 1790 /** 1791 * @deprecated Use {@link android.provider.Settings.Global#RADIO_WIFI} instead 1792 */ 1793 @Deprecated 1794 public static final String RADIO_WIFI = Global.RADIO_WIFI; 1795 1796 /** 1797 * @deprecated Use {@link android.provider.Settings.Global#RADIO_WIMAX} instead 1798 * {@hide} 1799 */ 1800 @Deprecated 1801 public static final String RADIO_WIMAX = Global.RADIO_WIMAX; 1802 1803 /** 1804 * @deprecated Use {@link android.provider.Settings.Global#RADIO_CELL} instead 1805 */ 1806 @Deprecated 1807 public static final String RADIO_CELL = Global.RADIO_CELL; 1808 1809 /** 1810 * @deprecated Use {@link android.provider.Settings.Global#RADIO_NFC} instead 1811 */ 1812 @Deprecated 1813 public static final String RADIO_NFC = Global.RADIO_NFC; 1814 1815 /** 1816 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_RADIOS} instead 1817 */ 1818 @Deprecated 1819 public static final String AIRPLANE_MODE_RADIOS = Global.AIRPLANE_MODE_RADIOS; 1820 1821 /** 1822 * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_TOGGLEABLE_RADIOS} instead 1823 * 1824 * {@hide} 1825 */ 1826 @Deprecated 1827 public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = 1828 Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS; 1829 1830 /** 1831 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY} instead 1832 */ 1833 @Deprecated 1834 public static final String WIFI_SLEEP_POLICY = Global.WIFI_SLEEP_POLICY; 1835 1836 /** 1837 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_DEFAULT} instead 1838 */ 1839 @Deprecated 1840 public static final int WIFI_SLEEP_POLICY_DEFAULT = Global.WIFI_SLEEP_POLICY_DEFAULT; 1841 1842 /** 1843 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED} instead 1844 */ 1845 @Deprecated 1846 public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1847 Global.WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED; 1848 1849 /** 1850 * @deprecated Use {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY_NEVER} instead 1851 */ 1852 @Deprecated 1853 public static final int WIFI_SLEEP_POLICY_NEVER = Global.WIFI_SLEEP_POLICY_NEVER; 1854 1855 /** 1856 * @deprecated Use {@link android.provider.Settings.Global#MODE_RINGER} instead 1857 */ 1858 @Deprecated 1859 public static final String MODE_RINGER = Global.MODE_RINGER; 1860 1861 /** 1862 * Whether to use static IP and other static network attributes. 1863 * <p> 1864 * Set to 1 for true and 0 for false. 1865 * 1866 * @deprecated Use {@link WifiManager} instead 1867 */ 1868 @Deprecated 1869 public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip"; 1870 1871 /** 1872 * The static IP address. 1873 * <p> 1874 * Example: "192.168.1.51" 1875 * 1876 * @deprecated Use {@link WifiManager} instead 1877 */ 1878 @Deprecated 1879 public static final String WIFI_STATIC_IP = "wifi_static_ip"; 1880 1881 /** 1882 * If using static IP, the gateway's IP address. 1883 * <p> 1884 * Example: "192.168.1.1" 1885 * 1886 * @deprecated Use {@link WifiManager} instead 1887 */ 1888 @Deprecated 1889 public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway"; 1890 1891 /** 1892 * If using static IP, the net mask. 1893 * <p> 1894 * Example: "255.255.255.0" 1895 * 1896 * @deprecated Use {@link WifiManager} instead 1897 */ 1898 @Deprecated 1899 public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask"; 1900 1901 /** 1902 * If using static IP, the primary DNS's IP address. 1903 * <p> 1904 * Example: "192.168.1.1" 1905 * 1906 * @deprecated Use {@link WifiManager} instead 1907 */ 1908 @Deprecated 1909 public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1"; 1910 1911 /** 1912 * If using static IP, the secondary DNS's IP address. 1913 * <p> 1914 * Example: "192.168.1.2" 1915 * 1916 * @deprecated Use {@link WifiManager} instead 1917 */ 1918 @Deprecated 1919 public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2"; 1920 1921 1922 /** 1923 * Determines whether remote devices may discover and/or connect to 1924 * this device. 1925 * <P>Type: INT</P> 1926 * 2 -- discoverable and connectable 1927 * 1 -- connectable but not discoverable 1928 * 0 -- neither connectable nor discoverable 1929 */ 1930 public static final String BLUETOOTH_DISCOVERABILITY = 1931 "bluetooth_discoverability"; 1932 1933 /** 1934 * Bluetooth discoverability timeout. If this value is nonzero, then 1935 * Bluetooth becomes discoverable for a certain number of seconds, 1936 * after which is becomes simply connectable. The value is in seconds. 1937 */ 1938 public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT = 1939 "bluetooth_discoverability_timeout"; 1940 1941 /** 1942 * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_ENABLED} 1943 * instead 1944 */ 1945 @Deprecated 1946 public static final String LOCK_PATTERN_ENABLED = Secure.LOCK_PATTERN_ENABLED; 1947 1948 /** 1949 * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_VISIBLE} 1950 * instead 1951 */ 1952 @Deprecated 1953 public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern"; 1954 1955 /** 1956 * @deprecated Use 1957 * {@link android.provider.Settings.Secure#LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED} 1958 * instead 1959 */ 1960 @Deprecated 1961 public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = 1962 "lock_pattern_tactile_feedback_enabled"; 1963 1964 1965 /** 1966 * A formatted string of the next alarm that is set, or the empty string 1967 * if there is no alarm set. 1968 * 1969 * @deprecated Use {@link android.app.AlarmManager#getNextAlarmClock()}. 1970 */ 1971 @Deprecated 1972 public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted"; 1973 1974 /** 1975 * Scaling factor for fonts, float. 1976 */ 1977 public static final String FONT_SCALE = "font_scale"; 1978 1979 /** 1980 * Name of an application package to be debugged. 1981 * 1982 * @deprecated Use {@link Global#DEBUG_APP} instead 1983 */ 1984 @Deprecated 1985 public static final String DEBUG_APP = Global.DEBUG_APP; 1986 1987 /** 1988 * If 1, when launching DEBUG_APP it will wait for the debugger before 1989 * starting user code. If 0, it will run normally. 1990 * 1991 * @deprecated Use {@link Global#WAIT_FOR_DEBUGGER} instead 1992 */ 1993 @Deprecated 1994 public static final String WAIT_FOR_DEBUGGER = Global.WAIT_FOR_DEBUGGER; 1995 1996 /** 1997 * Whether or not to dim the screen. 0=no 1=yes 1998 * @deprecated This setting is no longer used. 1999 */ 2000 @Deprecated 2001 public static final String DIM_SCREEN = "dim_screen"; 2002 2003 /** 2004 * The amount of time in milliseconds before the device goes to sleep or begins 2005 * to dream after a period of inactivity. This value is also known as the 2006 * user activity timeout period since the screen isn't necessarily turned off 2007 * when it expires. 2008 */ 2009 public static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout"; 2010 2011 /** 2012 * The screen backlight brightness between 0 and 255. 2013 */ 2014 public static final String SCREEN_BRIGHTNESS = "screen_brightness"; 2015 2016 /** 2017 * Control whether to enable automatic brightness mode. 2018 */ 2019 public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode"; 2020 2021 /** 2022 * Adjustment to auto-brightness to make it generally more (>0.0 <1.0) 2023 * or less (<0.0 >-1.0) bright. 2024 * @hide 2025 */ 2026 public static final String SCREEN_AUTO_BRIGHTNESS_ADJ = "screen_auto_brightness_adj"; 2027 2028 /** 2029 * SCREEN_BRIGHTNESS_MODE value for manual mode. 2030 */ 2031 public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = 0; 2032 2033 /** 2034 * SCREEN_BRIGHTNESS_MODE value for automatic mode. 2035 */ 2036 public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1; 2037 2038 /** 2039 * Control whether the process CPU usage meter should be shown. 2040 * 2041 * @deprecated Use {@link Global#SHOW_PROCESSES} instead 2042 */ 2043 @Deprecated 2044 public static final String SHOW_PROCESSES = Global.SHOW_PROCESSES; 2045 2046 /** 2047 * If 1, the activity manager will aggressively finish activities and 2048 * processes as soon as they are no longer needed. If 0, the normal 2049 * extended lifetime is used. 2050 * 2051 * @deprecated Use {@link Global#ALWAYS_FINISH_ACTIVITIES} instead 2052 */ 2053 @Deprecated 2054 public static final String ALWAYS_FINISH_ACTIVITIES = Global.ALWAYS_FINISH_ACTIVITIES; 2055 2056 /** 2057 * Determines which streams are affected by ringer mode changes. The 2058 * stream type's bit should be set to 1 if it should be muted when going 2059 * into an inaudible ringer mode. 2060 */ 2061 public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected"; 2062 2063 /** 2064 * Determines which streams are affected by mute. The 2065 * stream type's bit should be set to 1 if it should be muted when a mute request 2066 * is received. 2067 */ 2068 public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected"; 2069 2070 /** 2071 * Whether vibrate is on for different events. This is used internally, 2072 * changing this value will not change the vibrate. See AudioManager. 2073 */ 2074 public static final String VIBRATE_ON = "vibrate_on"; 2075 2076 /** 2077 * If 1, redirects the system vibrator to all currently attached input devices 2078 * that support vibration. If there are no such input devices, then the system 2079 * vibrator is used instead. 2080 * If 0, does not register the system vibrator. 2081 * 2082 * This setting is mainly intended to provide a compatibility mechanism for 2083 * applications that only know about the system vibrator and do not use the 2084 * input device vibrator API. 2085 * 2086 * @hide 2087 */ 2088 public static final String VIBRATE_INPUT_DEVICES = "vibrate_input_devices"; 2089 2090 /** 2091 * Ringer volume. This is used internally, changing this value will not 2092 * change the volume. See AudioManager. 2093 */ 2094 public static final String VOLUME_RING = "volume_ring"; 2095 2096 /** 2097 * System/notifications volume. This is used internally, changing this 2098 * value will not change the volume. See AudioManager. 2099 */ 2100 public static final String VOLUME_SYSTEM = "volume_system"; 2101 2102 /** 2103 * Voice call volume. This is used internally, changing this value will 2104 * not change the volume. See AudioManager. 2105 */ 2106 public static final String VOLUME_VOICE = "volume_voice"; 2107 2108 /** 2109 * Music/media/gaming volume. This is used internally, changing this 2110 * value will not change the volume. See AudioManager. 2111 */ 2112 public static final String VOLUME_MUSIC = "volume_music"; 2113 2114 /** 2115 * Alarm volume. This is used internally, changing this 2116 * value will not change the volume. See AudioManager. 2117 */ 2118 public static final String VOLUME_ALARM = "volume_alarm"; 2119 2120 /** 2121 * Notification volume. This is used internally, changing this 2122 * value will not change the volume. See AudioManager. 2123 */ 2124 public static final String VOLUME_NOTIFICATION = "volume_notification"; 2125 2126 /** 2127 * Bluetooth Headset volume. This is used internally, changing this value will 2128 * not change the volume. See AudioManager. 2129 */ 2130 public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco"; 2131 2132 /** 2133 * Master volume (float in the range 0.0f to 1.0f). 2134 * @hide 2135 */ 2136 public static final String VOLUME_MASTER = "volume_master"; 2137 2138 /** 2139 * Master volume mute (int 1 = mute, 0 = not muted). 2140 * 2141 * @hide 2142 */ 2143 public static final String VOLUME_MASTER_MUTE = "volume_master_mute"; 2144 2145 /** 2146 * Microphone mute (int 1 = mute, 0 = not muted). 2147 * 2148 * @hide 2149 */ 2150 public static final String MICROPHONE_MUTE = "microphone_mute"; 2151 2152 /** 2153 * Whether the notifications should use the ring volume (value of 1) or 2154 * a separate notification volume (value of 0). In most cases, users 2155 * will have this enabled so the notification and ringer volumes will be 2156 * the same. However, power users can disable this and use the separate 2157 * notification volume control. 2158 * <p> 2159 * Note: This is a one-off setting that will be removed in the future 2160 * when there is profile support. For this reason, it is kept hidden 2161 * from the public APIs. 2162 * 2163 * @hide 2164 * @deprecated 2165 */ 2166 @Deprecated 2167 public static final String NOTIFICATIONS_USE_RING_VOLUME = 2168 "notifications_use_ring_volume"; 2169 2170 /** 2171 * Whether silent mode should allow vibration feedback. This is used 2172 * internally in AudioService and the Sound settings activity to 2173 * coordinate decoupling of vibrate and silent modes. This setting 2174 * will likely be removed in a future release with support for 2175 * audio/vibe feedback profiles. 2176 * 2177 * Not used anymore. On devices with vibrator, the user explicitly selects 2178 * silent or vibrate mode. 2179 * Kept for use by legacy database upgrade code in DatabaseHelper. 2180 * @hide 2181 */ 2182 public static final String VIBRATE_IN_SILENT = "vibrate_in_silent"; 2183 2184 /** 2185 * The mapping of stream type (integer) to its setting. 2186 */ 2187 public static final String[] VOLUME_SETTINGS = { 2188 VOLUME_VOICE, VOLUME_SYSTEM, VOLUME_RING, VOLUME_MUSIC, 2189 VOLUME_ALARM, VOLUME_NOTIFICATION, VOLUME_BLUETOOTH_SCO 2190 }; 2191 2192 /** 2193 * Appended to various volume related settings to record the previous 2194 * values before they the settings were affected by a silent/vibrate 2195 * ringer mode change. 2196 */ 2197 public static final String APPEND_FOR_LAST_AUDIBLE = "_last_audible"; 2198 2199 /** 2200 * Persistent store for the system-wide default ringtone URI. 2201 * <p> 2202 * If you need to play the default ringtone at any given time, it is recommended 2203 * you give {@link #DEFAULT_RINGTONE_URI} to the media player. It will resolve 2204 * to the set default ringtone at the time of playing. 2205 * 2206 * @see #DEFAULT_RINGTONE_URI 2207 */ 2208 public static final String RINGTONE = "ringtone"; 2209 2210 /** 2211 * A {@link Uri} that will point to the current default ringtone at any 2212 * given time. 2213 * <p> 2214 * If the current default ringtone is in the DRM provider and the caller 2215 * does not have permission, the exception will be a 2216 * FileNotFoundException. 2217 */ 2218 public static final Uri DEFAULT_RINGTONE_URI = getUriFor(RINGTONE); 2219 2220 /** 2221 * Persistent store for the system-wide default notification sound. 2222 * 2223 * @see #RINGTONE 2224 * @see #DEFAULT_NOTIFICATION_URI 2225 */ 2226 public static final String NOTIFICATION_SOUND = "notification_sound"; 2227 2228 /** 2229 * A {@link Uri} that will point to the current default notification 2230 * sound at any given time. 2231 * 2232 * @see #DEFAULT_RINGTONE_URI 2233 */ 2234 public static final Uri DEFAULT_NOTIFICATION_URI = getUriFor(NOTIFICATION_SOUND); 2235 2236 /** 2237 * Persistent store for the system-wide default alarm alert. 2238 * 2239 * @see #RINGTONE 2240 * @see #DEFAULT_ALARM_ALERT_URI 2241 */ 2242 public static final String ALARM_ALERT = "alarm_alert"; 2243 2244 /** 2245 * A {@link Uri} that will point to the current default alarm alert at 2246 * any given time. 2247 * 2248 * @see #DEFAULT_ALARM_ALERT_URI 2249 */ 2250 public static final Uri DEFAULT_ALARM_ALERT_URI = getUriFor(ALARM_ALERT); 2251 2252 /** 2253 * Persistent store for the system default media button event receiver. 2254 * 2255 * @hide 2256 */ 2257 public static final String MEDIA_BUTTON_RECEIVER = "media_button_receiver"; 2258 2259 /** 2260 * Setting to enable Auto Replace (AutoText) in text editors. 1 = On, 0 = Off 2261 */ 2262 public static final String TEXT_AUTO_REPLACE = "auto_replace"; 2263 2264 /** 2265 * Setting to enable Auto Caps in text editors. 1 = On, 0 = Off 2266 */ 2267 public static final String TEXT_AUTO_CAPS = "auto_caps"; 2268 2269 /** 2270 * Setting to enable Auto Punctuate in text editors. 1 = On, 0 = Off. This 2271 * feature converts two spaces to a "." and space. 2272 */ 2273 public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate"; 2274 2275 /** 2276 * Setting to showing password characters in text editors. 1 = On, 0 = Off 2277 */ 2278 public static final String TEXT_SHOW_PASSWORD = "show_password"; 2279 2280 public static final String SHOW_GTALK_SERVICE_STATUS = 2281 "SHOW_GTALK_SERVICE_STATUS"; 2282 2283 /** 2284 * Name of activity to use for wallpaper on the home screen. 2285 * 2286 * @deprecated Use {@link WallpaperManager} instead. 2287 */ 2288 @Deprecated 2289 public static final String WALLPAPER_ACTIVITY = "wallpaper_activity"; 2290 2291 /** 2292 * @deprecated Use {@link android.provider.Settings.Global#AUTO_TIME} 2293 * instead 2294 */ 2295 @Deprecated 2296 public static final String AUTO_TIME = Global.AUTO_TIME; 2297 2298 /** 2299 * @deprecated Use {@link android.provider.Settings.Global#AUTO_TIME_ZONE} 2300 * instead 2301 */ 2302 @Deprecated 2303 public static final String AUTO_TIME_ZONE = Global.AUTO_TIME_ZONE; 2304 2305 /** 2306 * Display times as 12 or 24 hours 2307 * 12 2308 * 24 2309 */ 2310 public static final String TIME_12_24 = "time_12_24"; 2311 2312 /** 2313 * Date format string 2314 * mm/dd/yyyy 2315 * dd/mm/yyyy 2316 * yyyy/mm/dd 2317 */ 2318 public static final String DATE_FORMAT = "date_format"; 2319 2320 /** 2321 * Whether the setup wizard has been run before (on first boot), or if 2322 * it still needs to be run. 2323 * 2324 * nonzero = it has been run in the past 2325 * 0 = it has not been run in the past 2326 */ 2327 public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run"; 2328 2329 /** 2330 * Scaling factor for normal window animations. Setting to 0 will disable window 2331 * animations. 2332 * 2333 * @deprecated Use {@link Global#WINDOW_ANIMATION_SCALE} instead 2334 */ 2335 @Deprecated 2336 public static final String WINDOW_ANIMATION_SCALE = Global.WINDOW_ANIMATION_SCALE; 2337 2338 /** 2339 * Scaling factor for activity transition animations. Setting to 0 will disable window 2340 * animations. 2341 * 2342 * @deprecated Use {@link Global#TRANSITION_ANIMATION_SCALE} instead 2343 */ 2344 @Deprecated 2345 public static final String TRANSITION_ANIMATION_SCALE = Global.TRANSITION_ANIMATION_SCALE; 2346 2347 /** 2348 * Scaling factor for Animator-based animations. This affects both the start delay and 2349 * duration of all such animations. Setting to 0 will cause animations to end immediately. 2350 * The default value is 1. 2351 * 2352 * @deprecated Use {@link Global#ANIMATOR_DURATION_SCALE} instead 2353 */ 2354 @Deprecated 2355 public static final String ANIMATOR_DURATION_SCALE = Global.ANIMATOR_DURATION_SCALE; 2356 2357 /** 2358 * Control whether the accelerometer will be used to change screen 2359 * orientation. If 0, it will not be used unless explicitly requested 2360 * by the application; if 1, it will be used by default unless explicitly 2361 * disabled by the application. 2362 */ 2363 public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation"; 2364 2365 /** 2366 * Default screen rotation when no other policy applies. 2367 * When {@link #ACCELEROMETER_ROTATION} is zero and no on-screen Activity expresses a 2368 * preference, this rotation value will be used. Must be one of the 2369 * {@link android.view.Surface#ROTATION_0 Surface rotation constants}. 2370 * 2371 * @see android.view.Display#getRotation 2372 */ 2373 public static final String USER_ROTATION = "user_rotation"; 2374 2375 /** 2376 * Control whether the rotation lock toggle in the System UI should be hidden. 2377 * Typically this is done for accessibility purposes to make it harder for 2378 * the user to accidentally toggle the rotation lock while the display rotation 2379 * has been locked for accessibility. 2380 * 2381 * If 0, then rotation lock toggle is not hidden for accessibility (although it may be 2382 * unavailable for other reasons). If 1, then the rotation lock toggle is hidden. 2383 * 2384 * @hide 2385 */ 2386 public static final String HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY = 2387 "hide_rotation_lock_toggle_for_accessibility"; 2388 2389 /** 2390 * Whether the phone vibrates when it is ringing due to an incoming call. This will 2391 * be used by Phone and Setting apps; it shouldn't affect other apps. 2392 * The value is boolean (1 or 0). 2393 * 2394 * Note: this is not same as "vibrate on ring", which had been available until ICS. 2395 * It was about AudioManager's setting and thus affected all the applications which 2396 * relied on the setting, while this is purely about the vibration setting for incoming 2397 * calls. 2398 * 2399 * @hide 2400 */ 2401 public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing"; 2402 2403 /** 2404 * Whether the audible DTMF tones are played by the dialer when dialing. The value is 2405 * boolean (1 or 0). 2406 */ 2407 public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone"; 2408 2409 /** 2410 * CDMA only settings 2411 * DTMF tone type played by the dialer when dialing. 2412 * 0 = Normal 2413 * 1 = Long 2414 * @hide 2415 */ 2416 public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type"; 2417 2418 /** 2419 * Whether the hearing aid is enabled. The value is 2420 * boolean (1 or 0). 2421 * @hide 2422 */ 2423 public static final String HEARING_AID = "hearing_aid"; 2424 2425 /** 2426 * CDMA only settings 2427 * TTY Mode 2428 * 0 = OFF 2429 * 1 = FULL 2430 * 2 = VCO 2431 * 3 = HCO 2432 * @hide 2433 */ 2434 public static final String TTY_MODE = "tty_mode"; 2435 2436 /** 2437 * Whether the sounds effects (key clicks, lid open ...) are enabled. The value is 2438 * boolean (1 or 0). 2439 */ 2440 public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled"; 2441 2442 /** 2443 * Whether the haptic feedback (long presses, ...) are enabled. The value is 2444 * boolean (1 or 0). 2445 */ 2446 public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled"; 2447 2448 /** 2449 * @deprecated Each application that shows web suggestions should have its own 2450 * setting for this. 2451 */ 2452 @Deprecated 2453 public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions"; 2454 2455 /** 2456 * Whether the notification LED should repeatedly flash when a notification is 2457 * pending. The value is boolean (1 or 0). 2458 * @hide 2459 */ 2460 public static final String NOTIFICATION_LIGHT_PULSE = "notification_light_pulse"; 2461 2462 /** 2463 * Show pointer location on screen? 2464 * 0 = no 2465 * 1 = yes 2466 * @hide 2467 */ 2468 public static final String POINTER_LOCATION = "pointer_location"; 2469 2470 /** 2471 * Show touch positions on screen? 2472 * 0 = no 2473 * 1 = yes 2474 * @hide 2475 */ 2476 public static final String SHOW_TOUCHES = "show_touches"; 2477 2478 /** 2479 * Log raw orientation data from 2480 * {@link com.android.internal.policy.impl.WindowOrientationListener} for use with the 2481 * orientationplot.py tool. 2482 * 0 = no 2483 * 1 = yes 2484 * @hide 2485 */ 2486 public static final String WINDOW_ORIENTATION_LISTENER_LOG = 2487 "window_orientation_listener_log"; 2488 2489 /** 2490 * @deprecated Use {@link android.provider.Settings.Global#POWER_SOUNDS_ENABLED} 2491 * instead 2492 * @hide 2493 */ 2494 @Deprecated 2495 public static final String POWER_SOUNDS_ENABLED = Global.POWER_SOUNDS_ENABLED; 2496 2497 /** 2498 * @deprecated Use {@link android.provider.Settings.Global#DOCK_SOUNDS_ENABLED} 2499 * instead 2500 * @hide 2501 */ 2502 @Deprecated 2503 public static final String DOCK_SOUNDS_ENABLED = Global.DOCK_SOUNDS_ENABLED; 2504 2505 /** 2506 * Whether to play sounds when the keyguard is shown and dismissed. 2507 * @hide 2508 */ 2509 public static final String LOCKSCREEN_SOUNDS_ENABLED = "lockscreen_sounds_enabled"; 2510 2511 /** 2512 * Whether the lockscreen should be completely disabled. 2513 * @hide 2514 */ 2515 public static final String LOCKSCREEN_DISABLED = "lockscreen.disabled"; 2516 2517 /** 2518 * @deprecated Use {@link android.provider.Settings.Global#LOW_BATTERY_SOUND} 2519 * instead 2520 * @hide 2521 */ 2522 @Deprecated 2523 public static final String LOW_BATTERY_SOUND = Global.LOW_BATTERY_SOUND; 2524 2525 /** 2526 * @deprecated Use {@link android.provider.Settings.Global#DESK_DOCK_SOUND} 2527 * instead 2528 * @hide 2529 */ 2530 @Deprecated 2531 public static final String DESK_DOCK_SOUND = Global.DESK_DOCK_SOUND; 2532 2533 /** 2534 * @deprecated Use {@link android.provider.Settings.Global#DESK_UNDOCK_SOUND} 2535 * instead 2536 * @hide 2537 */ 2538 @Deprecated 2539 public static final String DESK_UNDOCK_SOUND = Global.DESK_UNDOCK_SOUND; 2540 2541 /** 2542 * @deprecated Use {@link android.provider.Settings.Global#CAR_DOCK_SOUND} 2543 * instead 2544 * @hide 2545 */ 2546 @Deprecated 2547 public static final String CAR_DOCK_SOUND = Global.CAR_DOCK_SOUND; 2548 2549 /** 2550 * @deprecated Use {@link android.provider.Settings.Global#CAR_UNDOCK_SOUND} 2551 * instead 2552 * @hide 2553 */ 2554 @Deprecated 2555 public static final String CAR_UNDOCK_SOUND = Global.CAR_UNDOCK_SOUND; 2556 2557 /** 2558 * @deprecated Use {@link android.provider.Settings.Global#LOCK_SOUND} 2559 * instead 2560 * @hide 2561 */ 2562 @Deprecated 2563 public static final String LOCK_SOUND = Global.LOCK_SOUND; 2564 2565 /** 2566 * @deprecated Use {@link android.provider.Settings.Global#UNLOCK_SOUND} 2567 * instead 2568 * @hide 2569 */ 2570 @Deprecated 2571 public static final String UNLOCK_SOUND = Global.UNLOCK_SOUND; 2572 2573 /** 2574 * Receive incoming SIP calls? 2575 * 0 = no 2576 * 1 = yes 2577 * @hide 2578 */ 2579 public static final String SIP_RECEIVE_CALLS = "sip_receive_calls"; 2580 2581 /** 2582 * Call Preference String. 2583 * "SIP_ALWAYS" : Always use SIP with network access 2584 * "SIP_ADDRESS_ONLY" : Only if destination is a SIP address 2585 * @hide 2586 */ 2587 public static final String SIP_CALL_OPTIONS = "sip_call_options"; 2588 2589 /** 2590 * One of the sip call options: Always use SIP with network access. 2591 * @hide 2592 */ 2593 public static final String SIP_ALWAYS = "SIP_ALWAYS"; 2594 2595 /** 2596 * One of the sip call options: Only if destination is a SIP address. 2597 * @hide 2598 */ 2599 public static final String SIP_ADDRESS_ONLY = "SIP_ADDRESS_ONLY"; 2600 2601 /** 2602 * @deprecated Use SIP_ALWAYS or SIP_ADDRESS_ONLY instead. Formerly used to indicate that 2603 * the user should be prompted each time a call is made whether it should be placed using 2604 * SIP. The {@link com.android.providers.settings.DatabaseHelper} replaces this with 2605 * SIP_ADDRESS_ONLY. 2606 * @hide 2607 */ 2608 @Deprecated 2609 public static final String SIP_ASK_ME_EACH_TIME = "SIP_ASK_ME_EACH_TIME"; 2610 2611 /** 2612 * Pointer speed setting. 2613 * This is an integer value in a range between -7 and +7, so there are 15 possible values. 2614 * -7 = slowest 2615 * 0 = default speed 2616 * +7 = fastest 2617 * @hide 2618 */ 2619 public static final String POINTER_SPEED = "pointer_speed"; 2620 2621 /** 2622 * Whether lock-to-app will be triggered by long-press on recents. 2623 * @hide 2624 */ 2625 public static final String LOCK_TO_APP_ENABLED = "lock_to_app_enabled"; 2626 2627 /** 2628 * I am the lolrus. 2629 * <p> 2630 * Nonzero values indicate that the user has a bukkit. 2631 * Backward-compatible with <code>PrefGetPreference(prefAllowEasterEggs)</code>. 2632 * @hide 2633 */ 2634 public static final String EGG_MODE = "egg_mode"; 2635 2636 /** 2637 * Settings to backup. This is here so that it's in the same place as the settings 2638 * keys and easy to update. 2639 * 2640 * NOTE: Settings are backed up and restored in the order they appear 2641 * in this array. If you have one setting depending on another, 2642 * make sure that they are ordered appropriately. 2643 * 2644 * @hide 2645 */ 2646 public static final String[] SETTINGS_TO_BACKUP = { 2647 STAY_ON_WHILE_PLUGGED_IN, // moved to global 2648 WIFI_USE_STATIC_IP, 2649 WIFI_STATIC_IP, 2650 WIFI_STATIC_GATEWAY, 2651 WIFI_STATIC_NETMASK, 2652 WIFI_STATIC_DNS1, 2653 WIFI_STATIC_DNS2, 2654 BLUETOOTH_DISCOVERABILITY, 2655 BLUETOOTH_DISCOVERABILITY_TIMEOUT, 2656 DIM_SCREEN, 2657 SCREEN_OFF_TIMEOUT, 2658 SCREEN_BRIGHTNESS, 2659 SCREEN_BRIGHTNESS_MODE, 2660 SCREEN_AUTO_BRIGHTNESS_ADJ, 2661 VIBRATE_INPUT_DEVICES, 2662 MODE_RINGER_STREAMS_AFFECTED, 2663 VOLUME_VOICE, 2664 VOLUME_SYSTEM, 2665 VOLUME_RING, 2666 VOLUME_MUSIC, 2667 VOLUME_ALARM, 2668 VOLUME_NOTIFICATION, 2669 VOLUME_BLUETOOTH_SCO, 2670 VOLUME_VOICE + APPEND_FOR_LAST_AUDIBLE, 2671 VOLUME_SYSTEM + APPEND_FOR_LAST_AUDIBLE, 2672 VOLUME_RING + APPEND_FOR_LAST_AUDIBLE, 2673 VOLUME_MUSIC + APPEND_FOR_LAST_AUDIBLE, 2674 VOLUME_ALARM + APPEND_FOR_LAST_AUDIBLE, 2675 VOLUME_NOTIFICATION + APPEND_FOR_LAST_AUDIBLE, 2676 VOLUME_BLUETOOTH_SCO + APPEND_FOR_LAST_AUDIBLE, 2677 TEXT_AUTO_REPLACE, 2678 TEXT_AUTO_CAPS, 2679 TEXT_AUTO_PUNCTUATE, 2680 TEXT_SHOW_PASSWORD, 2681 AUTO_TIME, // moved to global 2682 AUTO_TIME_ZONE, // moved to global 2683 TIME_12_24, 2684 DATE_FORMAT, 2685 DTMF_TONE_WHEN_DIALING, 2686 DTMF_TONE_TYPE_WHEN_DIALING, 2687 HEARING_AID, 2688 TTY_MODE, 2689 SOUND_EFFECTS_ENABLED, 2690 HAPTIC_FEEDBACK_ENABLED, 2691 POWER_SOUNDS_ENABLED, // moved to global 2692 DOCK_SOUNDS_ENABLED, // moved to global 2693 LOCKSCREEN_SOUNDS_ENABLED, 2694 SHOW_WEB_SUGGESTIONS, 2695 NOTIFICATION_LIGHT_PULSE, 2696 SIP_CALL_OPTIONS, 2697 SIP_RECEIVE_CALLS, 2698 POINTER_SPEED, 2699 VIBRATE_WHEN_RINGING, 2700 RINGTONE, 2701 LOCK_TO_APP_ENABLED, 2702 NOTIFICATION_SOUND 2703 }; 2704 2705 /** 2706 * These entries are considered common between the personal and the managed profile, 2707 * since the managed profile doesn't get to change them. 2708 * @hide 2709 */ 2710 public static final String[] CLONE_TO_MANAGED_PROFILE = { 2711 DATE_FORMAT, 2712 HAPTIC_FEEDBACK_ENABLED, 2713 SOUND_EFFECTS_ENABLED, 2714 TEXT_SHOW_PASSWORD, 2715 TIME_12_24 2716 }; 2717 2718 /** 2719 * When to use Wi-Fi calling 2720 * 2721 * @see android.telephony.TelephonyManager.WifiCallingChoices 2722 * @hide 2723 */ 2724 public static final String WHEN_TO_MAKE_WIFI_CALLS = "when_to_make_wifi_calls"; 2725 2726 // Settings moved to Settings.Secure 2727 2728 /** 2729 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED} 2730 * instead 2731 */ 2732 @Deprecated 2733 public static final String ADB_ENABLED = Global.ADB_ENABLED; 2734 2735 /** 2736 * @deprecated Use {@link android.provider.Settings.Secure#ANDROID_ID} instead 2737 */ 2738 @Deprecated 2739 public static final String ANDROID_ID = Secure.ANDROID_ID; 2740 2741 /** 2742 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead 2743 */ 2744 @Deprecated 2745 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON; 2746 2747 /** 2748 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead 2749 */ 2750 @Deprecated 2751 public static final String DATA_ROAMING = Global.DATA_ROAMING; 2752 2753 /** 2754 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead 2755 */ 2756 @Deprecated 2757 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED; 2758 2759 /** 2760 * @deprecated Use {@link android.provider.Settings.Global#HTTP_PROXY} instead 2761 */ 2762 @Deprecated 2763 public static final String HTTP_PROXY = Global.HTTP_PROXY; 2764 2765 /** 2766 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead 2767 */ 2768 @Deprecated 2769 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS; 2770 2771 /** 2772 * @deprecated Use {@link android.provider.Settings.Secure#LOCATION_PROVIDERS_ALLOWED} 2773 * instead 2774 */ 2775 @Deprecated 2776 public static final String LOCATION_PROVIDERS_ALLOWED = Secure.LOCATION_PROVIDERS_ALLOWED; 2777 2778 /** 2779 * @deprecated Use {@link android.provider.Settings.Secure#LOGGING_ID} instead 2780 */ 2781 @Deprecated 2782 public static final String LOGGING_ID = Secure.LOGGING_ID; 2783 2784 /** 2785 * @deprecated Use {@link android.provider.Settings.Global#NETWORK_PREFERENCE} instead 2786 */ 2787 @Deprecated 2788 public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE; 2789 2790 /** 2791 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_ENABLED} 2792 * instead 2793 */ 2794 @Deprecated 2795 public static final String PARENTAL_CONTROL_ENABLED = Secure.PARENTAL_CONTROL_ENABLED; 2796 2797 /** 2798 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_LAST_UPDATE} 2799 * instead 2800 */ 2801 @Deprecated 2802 public static final String PARENTAL_CONTROL_LAST_UPDATE = Secure.PARENTAL_CONTROL_LAST_UPDATE; 2803 2804 /** 2805 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_REDIRECT_URL} 2806 * instead 2807 */ 2808 @Deprecated 2809 public static final String PARENTAL_CONTROL_REDIRECT_URL = 2810 Secure.PARENTAL_CONTROL_REDIRECT_URL; 2811 2812 /** 2813 * @deprecated Use {@link android.provider.Settings.Secure#SETTINGS_CLASSNAME} instead 2814 */ 2815 @Deprecated 2816 public static final String SETTINGS_CLASSNAME = Secure.SETTINGS_CLASSNAME; 2817 2818 /** 2819 * @deprecated Use {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED} instead 2820 */ 2821 @Deprecated 2822 public static final String USB_MASS_STORAGE_ENABLED = Global.USB_MASS_STORAGE_ENABLED; 2823 2824 /** 2825 * @deprecated Use {@link android.provider.Settings.Global#USE_GOOGLE_MAIL} instead 2826 */ 2827 @Deprecated 2828 public static final String USE_GOOGLE_MAIL = Global.USE_GOOGLE_MAIL; 2829 2830 /** 2831 * @deprecated Use 2832 * {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead 2833 */ 2834 @Deprecated 2835 public static final String WIFI_MAX_DHCP_RETRY_COUNT = Global.WIFI_MAX_DHCP_RETRY_COUNT; 2836 2837 /** 2838 * @deprecated Use 2839 * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead 2840 */ 2841 @Deprecated 2842 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = 2843 Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS; 2844 2845 /** 2846 * @deprecated Use 2847 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON} instead 2848 */ 2849 @Deprecated 2850 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = 2851 Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON; 2852 2853 /** 2854 * @deprecated Use 2855 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} instead 2856 */ 2857 @Deprecated 2858 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = 2859 Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY; 2860 2861 /** 2862 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT} 2863 * instead 2864 */ 2865 @Deprecated 2866 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = Global.WIFI_NUM_OPEN_NETWORKS_KEPT; 2867 2868 /** 2869 * @deprecated Use {@link android.provider.Settings.Global#WIFI_ON} instead 2870 */ 2871 @Deprecated 2872 public static final String WIFI_ON = Global.WIFI_ON; 2873 2874 /** 2875 * @deprecated Use 2876 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE} 2877 * instead 2878 */ 2879 @Deprecated 2880 public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = 2881 Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE; 2882 2883 /** 2884 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_AP_COUNT} instead 2885 */ 2886 @Deprecated 2887 public static final String WIFI_WATCHDOG_AP_COUNT = Secure.WIFI_WATCHDOG_AP_COUNT; 2888 2889 /** 2890 * @deprecated Use 2891 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS} instead 2892 */ 2893 @Deprecated 2894 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = 2895 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS; 2896 2897 /** 2898 * @deprecated Use 2899 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED} instead 2900 */ 2901 @Deprecated 2902 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = 2903 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED; 2904 2905 /** 2906 * @deprecated Use 2907 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS} 2908 * instead 2909 */ 2910 @Deprecated 2911 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = 2912 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS; 2913 2914 /** 2915 * @deprecated Use 2916 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT} instead 2917 */ 2918 @Deprecated 2919 public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = 2920 Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT; 2921 2922 /** 2923 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_MAX_AP_CHECKS} 2924 * instead 2925 */ 2926 @Deprecated 2927 public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = Secure.WIFI_WATCHDOG_MAX_AP_CHECKS; 2928 2929 /** 2930 * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead 2931 */ 2932 @Deprecated 2933 public static final String WIFI_WATCHDOG_ON = Global.WIFI_WATCHDOG_ON; 2934 2935 /** 2936 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_COUNT} instead 2937 */ 2938 @Deprecated 2939 public static final String WIFI_WATCHDOG_PING_COUNT = Secure.WIFI_WATCHDOG_PING_COUNT; 2940 2941 /** 2942 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_DELAY_MS} 2943 * instead 2944 */ 2945 @Deprecated 2946 public static final String WIFI_WATCHDOG_PING_DELAY_MS = Secure.WIFI_WATCHDOG_PING_DELAY_MS; 2947 2948 /** 2949 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_TIMEOUT_MS} 2950 * instead 2951 */ 2952 @Deprecated 2953 public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = 2954 Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS; 2955 } 2956 2957 /** 2958 * Secure system settings, containing system preferences that applications 2959 * can read but are not allowed to write. These are for preferences that 2960 * the user must explicitly modify through the system UI or specialized 2961 * APIs for those values, not modified directly by applications. 2962 */ 2963 public static final class Secure extends NameValueTable { 2964 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version"; 2965 2966 /** 2967 * The content:// style URL for this table 2968 */ 2969 public static final Uri CONTENT_URI = 2970 Uri.parse("content://" + AUTHORITY + "/secure"); 2971 2972 // Populated lazily, guarded by class object: 2973 private static final NameValueCache sNameValueCache = new NameValueCache( 2974 SYS_PROP_SETTING_VERSION, 2975 CONTENT_URI, 2976 CALL_METHOD_GET_SECURE, 2977 CALL_METHOD_PUT_SECURE); 2978 2979 private static ILockSettings sLockSettings = null; 2980 2981 private static boolean sIsSystemProcess; 2982 private static final HashSet<String> MOVED_TO_LOCK_SETTINGS; 2983 private static final HashSet<String> MOVED_TO_GLOBAL; 2984 static { 2985 MOVED_TO_LOCK_SETTINGS = new HashSet<String>(3); 2986 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_ENABLED); 2987 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_VISIBLE); 2988 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); 2989 2990 MOVED_TO_GLOBAL = new HashSet<String>(); 2991 MOVED_TO_GLOBAL.add(Settings.Global.ADB_ENABLED); 2992 MOVED_TO_GLOBAL.add(Settings.Global.ASSISTED_GPS_ENABLED); 2993 MOVED_TO_GLOBAL.add(Settings.Global.BLUETOOTH_ON); 2994 MOVED_TO_GLOBAL.add(Settings.Global.BUGREPORT_IN_POWER_MENU); 2995 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_CELL_BROADCAST_SMS); 2996 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_ROAMING_MODE); 2997 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_SUBSCRIPTION_MODE); 2998 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE); 2999 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI); 3000 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ROAMING); 3001 MOVED_TO_GLOBAL.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED); 3002 MOVED_TO_GLOBAL.add(Settings.Global.DEVICE_PROVISIONED); 3003 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_DENSITY_FORCED); 3004 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_SIZE_FORCED); 3005 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE); 3006 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE); 3007 MOVED_TO_GLOBAL.add(Settings.Global.MOBILE_DATA); 3008 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_BUCKET_DURATION); 3009 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_DELETE_AGE); 3010 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_PERSIST_BYTES); 3011 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_ROTATE_AGE); 3012 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_ENABLED); 3013 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_GLOBAL_ALERT_BYTES); 3014 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_POLL_INTERVAL); 3015 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_SAMPLE_ENABLED); 3016 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_TIME_CACHE_MAX_AGE); 3017 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_BUCKET_DURATION); 3018 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_DELETE_AGE); 3019 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_PERSIST_BYTES); 3020 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_ROTATE_AGE); 3021 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_BUCKET_DURATION); 3022 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_DELETE_AGE); 3023 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_PERSIST_BYTES); 3024 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_ROTATE_AGE); 3025 MOVED_TO_GLOBAL.add(Settings.Global.NETWORK_PREFERENCE); 3026 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_DIFF); 3027 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_SPACING); 3028 MOVED_TO_GLOBAL.add(Settings.Global.NTP_SERVER); 3029 MOVED_TO_GLOBAL.add(Settings.Global.NTP_TIMEOUT); 3030 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_ERROR_POLL_COUNT); 3031 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS); 3032 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT); 3033 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS); 3034 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT); 3035 MOVED_TO_GLOBAL.add(Settings.Global.SAMPLING_PROFILER_MS); 3036 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL); 3037 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_REDIR_HOST); 3038 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_TARGET_URL); 3039 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_APN); 3040 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_REQUIRED); 3041 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_SUPPORTED); 3042 MOVED_TO_GLOBAL.add(Settings.Global.USB_MASS_STORAGE_ENABLED); 3043 MOVED_TO_GLOBAL.add(Settings.Global.USE_GOOGLE_MAIL); 3044 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_COUNTRY_CODE); 3045 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FRAMEWORK_SCAN_INTERVAL_MS); 3046 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FREQUENCY_BAND); 3047 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_IDLE_MS); 3048 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT); 3049 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS); 3050 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON); 3051 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY); 3052 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NUM_OPEN_NETWORKS_KEPT); 3053 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ON); 3054 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_DEVICE_NAME); 3055 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE); 3056 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS); 3057 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED); 3058 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ENHANCED_AUTO_JOIN); 3059 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORK_SHOW_RSSI); 3060 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_ON); 3061 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED); 3062 MOVED_TO_GLOBAL.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON); 3063 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_ENABLE); 3064 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT); 3065 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE); 3066 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS); 3067 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS); 3068 MOVED_TO_GLOBAL.add(Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS); 3069 MOVED_TO_GLOBAL.add(Settings.Global.WTF_IS_FATAL); 3070 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD); 3071 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_THRESHOLD); 3072 MOVED_TO_GLOBAL.add(Settings.Global.SEND_ACTION_APP_ERROR); 3073 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_AGE_SECONDS); 3074 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_MAX_FILES); 3075 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_KB); 3076 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_PERCENT); 3077 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_RESERVE_PERCENT); 3078 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_TAG_PREFIX); 3079 MOVED_TO_GLOBAL.add(Settings.Global.ERROR_LOGCAT_PREFIX); 3080 MOVED_TO_GLOBAL.add(Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL); 3081 MOVED_TO_GLOBAL.add(Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD); 3082 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE); 3083 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES); 3084 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES); 3085 MOVED_TO_GLOBAL.add(Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS); 3086 MOVED_TO_GLOBAL.add(Settings.Global.CONNECTIVITY_CHANGE_DELAY); 3087 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED); 3088 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_SERVER); 3089 MOVED_TO_GLOBAL.add(Settings.Global.NSD_ON); 3090 MOVED_TO_GLOBAL.add(Settings.Global.SET_INSTALL_LOCATION); 3091 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_INSTALL_LOCATION); 3092 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY); 3093 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY); 3094 MOVED_TO_GLOBAL.add(Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT); 3095 MOVED_TO_GLOBAL.add(Settings.Global.HTTP_PROXY); 3096 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_HOST); 3097 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_PORT); 3098 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST); 3099 MOVED_TO_GLOBAL.add(Settings.Global.SET_GLOBAL_HTTP_PROXY); 3100 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_DNS_SERVER); 3101 MOVED_TO_GLOBAL.add(Settings.Global.PREFERRED_NETWORK_MODE); 3102 MOVED_TO_GLOBAL.add(Settings.Global.WEBVIEW_DATA_REDUCTION_PROXY_KEY); 3103 } 3104 3105 /** @hide */ getMovedKeys(HashSet<String> outKeySet)3106 public static void getMovedKeys(HashSet<String> outKeySet) { 3107 outKeySet.addAll(MOVED_TO_GLOBAL); 3108 } 3109 3110 /** 3111 * Look up a name in the database. 3112 * @param resolver to access the database with 3113 * @param name to look up in the table 3114 * @return the corresponding value, or null if not present 3115 */ getString(ContentResolver resolver, String name)3116 public static String getString(ContentResolver resolver, String name) { 3117 return getStringForUser(resolver, name, UserHandle.myUserId()); 3118 } 3119 3120 /** @hide */ getStringForUser(ContentResolver resolver, String name, int userHandle)3121 public static String getStringForUser(ContentResolver resolver, String name, 3122 int userHandle) { 3123 if (MOVED_TO_GLOBAL.contains(name)) { 3124 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure" 3125 + " to android.provider.Settings.Global."); 3126 return Global.getStringForUser(resolver, name, userHandle); 3127 } 3128 3129 if (MOVED_TO_LOCK_SETTINGS.contains(name)) { 3130 synchronized (Secure.class) { 3131 if (sLockSettings == null) { 3132 sLockSettings = ILockSettings.Stub.asInterface( 3133 (IBinder) ServiceManager.getService("lock_settings")); 3134 sIsSystemProcess = Process.myUid() == Process.SYSTEM_UID; 3135 } 3136 } 3137 if (sLockSettings != null && !sIsSystemProcess) { 3138 try { 3139 return sLockSettings.getString(name, "0", userHandle); 3140 } catch (RemoteException re) { 3141 // Fall through 3142 } 3143 } 3144 } 3145 3146 return sNameValueCache.getStringForUser(resolver, name, userHandle); 3147 } 3148 3149 /** 3150 * Store a name/value pair into the database. 3151 * @param resolver to access the database with 3152 * @param name to store 3153 * @param value to associate with the name 3154 * @return true if the value was set, false on database errors 3155 */ putString(ContentResolver resolver, String name, String value)3156 public static boolean putString(ContentResolver resolver, String name, String value) { 3157 return putStringForUser(resolver, name, value, UserHandle.myUserId()); 3158 } 3159 3160 /** @hide */ putStringForUser(ContentResolver resolver, String name, String value, int userHandle)3161 public static boolean putStringForUser(ContentResolver resolver, String name, String value, 3162 int userHandle) { 3163 if (LOCATION_MODE.equals(name)) { 3164 // HACK ALERT: temporary hack to work around b/10491283. 3165 // TODO: once b/10491283 fixed, remove this hack 3166 return setLocationModeForUser(resolver, Integer.parseInt(value), userHandle); 3167 } 3168 if (MOVED_TO_GLOBAL.contains(name)) { 3169 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 3170 + " to android.provider.Settings.Global"); 3171 return Global.putStringForUser(resolver, name, value, userHandle); 3172 } 3173 return sNameValueCache.putStringForUser(resolver, name, value, userHandle); 3174 } 3175 3176 /** 3177 * Construct the content URI for a particular name/value pair, 3178 * useful for monitoring changes with a ContentObserver. 3179 * @param name to look up in the table 3180 * @return the corresponding content URI, or null if not present 3181 */ getUriFor(String name)3182 public static Uri getUriFor(String name) { 3183 if (MOVED_TO_GLOBAL.contains(name)) { 3184 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure" 3185 + " to android.provider.Settings.Global, returning global URI."); 3186 return Global.getUriFor(Global.CONTENT_URI, name); 3187 } 3188 return getUriFor(CONTENT_URI, name); 3189 } 3190 3191 /** 3192 * Convenience function for retrieving a single secure settings value 3193 * as an integer. Note that internally setting values are always 3194 * stored as strings; this function converts the string to an integer 3195 * for you. The default value will be returned if the setting is 3196 * not defined or not an integer. 3197 * 3198 * @param cr The ContentResolver to access. 3199 * @param name The name of the setting to retrieve. 3200 * @param def Value to return if the setting is not defined. 3201 * 3202 * @return The setting's current value, or 'def' if it is not defined 3203 * or not a valid integer. 3204 */ getInt(ContentResolver cr, String name, int def)3205 public static int getInt(ContentResolver cr, String name, int def) { 3206 return getIntForUser(cr, name, def, UserHandle.myUserId()); 3207 } 3208 3209 /** @hide */ getIntForUser(ContentResolver cr, String name, int def, int userHandle)3210 public static int getIntForUser(ContentResolver cr, String name, int def, int userHandle) { 3211 if (LOCATION_MODE.equals(name)) { 3212 // HACK ALERT: temporary hack to work around b/10491283. 3213 // TODO: once b/10491283 fixed, remove this hack 3214 return getLocationModeForUser(cr, userHandle); 3215 } 3216 String v = getStringForUser(cr, name, userHandle); 3217 try { 3218 return v != null ? Integer.parseInt(v) : def; 3219 } catch (NumberFormatException e) { 3220 return def; 3221 } 3222 } 3223 3224 /** 3225 * Convenience function for retrieving a single secure settings value 3226 * as an integer. Note that internally setting values are always 3227 * stored as strings; this function converts the string to an integer 3228 * for you. 3229 * <p> 3230 * This version does not take a default value. If the setting has not 3231 * been set, or the string value is not a number, 3232 * it throws {@link SettingNotFoundException}. 3233 * 3234 * @param cr The ContentResolver to access. 3235 * @param name The name of the setting to retrieve. 3236 * 3237 * @throws SettingNotFoundException Thrown if a setting by the given 3238 * name can't be found or the setting value is not an integer. 3239 * 3240 * @return The setting's current value. 3241 */ getInt(ContentResolver cr, String name)3242 public static int getInt(ContentResolver cr, String name) 3243 throws SettingNotFoundException { 3244 return getIntForUser(cr, name, UserHandle.myUserId()); 3245 } 3246 3247 /** @hide */ getIntForUser(ContentResolver cr, String name, int userHandle)3248 public static int getIntForUser(ContentResolver cr, String name, int userHandle) 3249 throws SettingNotFoundException { 3250 if (LOCATION_MODE.equals(name)) { 3251 // HACK ALERT: temporary hack to work around b/10491283. 3252 // TODO: once b/10491283 fixed, remove this hack 3253 return getLocationModeForUser(cr, userHandle); 3254 } 3255 String v = getStringForUser(cr, name, userHandle); 3256 try { 3257 return Integer.parseInt(v); 3258 } catch (NumberFormatException e) { 3259 throw new SettingNotFoundException(name); 3260 } 3261 } 3262 3263 /** 3264 * Convenience function for updating a single settings value as an 3265 * integer. This will either create a new entry in the table if the 3266 * given name does not exist, or modify the value of the existing row 3267 * with that name. Note that internally setting values are always 3268 * stored as strings, so this function converts the given value to a 3269 * string before storing it. 3270 * 3271 * @param cr The ContentResolver to access. 3272 * @param name The name of the setting to modify. 3273 * @param value The new value for the setting. 3274 * @return true if the value was set, false on database errors 3275 */ putInt(ContentResolver cr, String name, int value)3276 public static boolean putInt(ContentResolver cr, String name, int value) { 3277 return putIntForUser(cr, name, value, UserHandle.myUserId()); 3278 } 3279 3280 /** @hide */ putIntForUser(ContentResolver cr, String name, int value, int userHandle)3281 public static boolean putIntForUser(ContentResolver cr, String name, int value, 3282 int userHandle) { 3283 return putStringForUser(cr, name, Integer.toString(value), userHandle); 3284 } 3285 3286 /** 3287 * Convenience function for retrieving a single secure settings value 3288 * as a {@code long}. Note that internally setting values are always 3289 * stored as strings; this function converts the string to a {@code long} 3290 * for you. The default value will be returned if the setting is 3291 * not defined or not a {@code long}. 3292 * 3293 * @param cr The ContentResolver to access. 3294 * @param name The name of the setting to retrieve. 3295 * @param def Value to return if the setting is not defined. 3296 * 3297 * @return The setting's current value, or 'def' if it is not defined 3298 * or not a valid {@code long}. 3299 */ getLong(ContentResolver cr, String name, long def)3300 public static long getLong(ContentResolver cr, String name, long def) { 3301 return getLongForUser(cr, name, def, UserHandle.myUserId()); 3302 } 3303 3304 /** @hide */ getLongForUser(ContentResolver cr, String name, long def, int userHandle)3305 public static long getLongForUser(ContentResolver cr, String name, long def, 3306 int userHandle) { 3307 String valString = getStringForUser(cr, name, userHandle); 3308 long value; 3309 try { 3310 value = valString != null ? Long.parseLong(valString) : def; 3311 } catch (NumberFormatException e) { 3312 value = def; 3313 } 3314 return value; 3315 } 3316 3317 /** 3318 * Convenience function for retrieving a single secure settings value 3319 * as a {@code long}. Note that internally setting values are always 3320 * stored as strings; this function converts the string to a {@code long} 3321 * for you. 3322 * <p> 3323 * This version does not take a default value. If the setting has not 3324 * been set, or the string value is not a number, 3325 * it throws {@link SettingNotFoundException}. 3326 * 3327 * @param cr The ContentResolver to access. 3328 * @param name The name of the setting to retrieve. 3329 * 3330 * @return The setting's current value. 3331 * @throws SettingNotFoundException Thrown if a setting by the given 3332 * name can't be found or the setting value is not an integer. 3333 */ getLong(ContentResolver cr, String name)3334 public static long getLong(ContentResolver cr, String name) 3335 throws SettingNotFoundException { 3336 return getLongForUser(cr, name, UserHandle.myUserId()); 3337 } 3338 3339 /** @hide */ getLongForUser(ContentResolver cr, String name, int userHandle)3340 public static long getLongForUser(ContentResolver cr, String name, int userHandle) 3341 throws SettingNotFoundException { 3342 String valString = getStringForUser(cr, name, userHandle); 3343 try { 3344 return Long.parseLong(valString); 3345 } catch (NumberFormatException e) { 3346 throw new SettingNotFoundException(name); 3347 } 3348 } 3349 3350 /** 3351 * Convenience function for updating a secure settings value as a long 3352 * integer. This will either create a new entry in the table if the 3353 * given name does not exist, or modify the value of the existing row 3354 * with that name. Note that internally setting values are always 3355 * stored as strings, so this function converts the given value to a 3356 * string before storing it. 3357 * 3358 * @param cr The ContentResolver to access. 3359 * @param name The name of the setting to modify. 3360 * @param value The new value for the setting. 3361 * @return true if the value was set, false on database errors 3362 */ putLong(ContentResolver cr, String name, long value)3363 public static boolean putLong(ContentResolver cr, String name, long value) { 3364 return putLongForUser(cr, name, value, UserHandle.myUserId()); 3365 } 3366 3367 /** @hide */ putLongForUser(ContentResolver cr, String name, long value, int userHandle)3368 public static boolean putLongForUser(ContentResolver cr, String name, long value, 3369 int userHandle) { 3370 return putStringForUser(cr, name, Long.toString(value), userHandle); 3371 } 3372 3373 /** 3374 * Convenience function for retrieving a single secure settings value 3375 * as a floating point number. Note that internally setting values are 3376 * always stored as strings; this function converts the string to an 3377 * float for you. The default value will be returned if the setting 3378 * is not defined or not a valid float. 3379 * 3380 * @param cr The ContentResolver to access. 3381 * @param name The name of the setting to retrieve. 3382 * @param def Value to return if the setting is not defined. 3383 * 3384 * @return The setting's current value, or 'def' if it is not defined 3385 * or not a valid float. 3386 */ getFloat(ContentResolver cr, String name, float def)3387 public static float getFloat(ContentResolver cr, String name, float def) { 3388 return getFloatForUser(cr, name, def, UserHandle.myUserId()); 3389 } 3390 3391 /** @hide */ getFloatForUser(ContentResolver cr, String name, float def, int userHandle)3392 public static float getFloatForUser(ContentResolver cr, String name, float def, 3393 int userHandle) { 3394 String v = getStringForUser(cr, name, userHandle); 3395 try { 3396 return v != null ? Float.parseFloat(v) : def; 3397 } catch (NumberFormatException e) { 3398 return def; 3399 } 3400 } 3401 3402 /** 3403 * Convenience function for retrieving a single secure settings value 3404 * as a float. Note that internally setting values are always 3405 * stored as strings; this function converts the string to a float 3406 * for you. 3407 * <p> 3408 * This version does not take a default value. If the setting has not 3409 * been set, or the string value is not a number, 3410 * it throws {@link SettingNotFoundException}. 3411 * 3412 * @param cr The ContentResolver to access. 3413 * @param name The name of the setting to retrieve. 3414 * 3415 * @throws SettingNotFoundException Thrown if a setting by the given 3416 * name can't be found or the setting value is not a float. 3417 * 3418 * @return The setting's current value. 3419 */ getFloat(ContentResolver cr, String name)3420 public static float getFloat(ContentResolver cr, String name) 3421 throws SettingNotFoundException { 3422 return getFloatForUser(cr, name, UserHandle.myUserId()); 3423 } 3424 3425 /** @hide */ getFloatForUser(ContentResolver cr, String name, int userHandle)3426 public static float getFloatForUser(ContentResolver cr, String name, int userHandle) 3427 throws SettingNotFoundException { 3428 String v = getStringForUser(cr, name, userHandle); 3429 if (v == null) { 3430 throw new SettingNotFoundException(name); 3431 } 3432 try { 3433 return Float.parseFloat(v); 3434 } catch (NumberFormatException e) { 3435 throw new SettingNotFoundException(name); 3436 } 3437 } 3438 3439 /** 3440 * Convenience function for updating a single settings value as a 3441 * floating point number. This will either create a new entry in the 3442 * table if the given name does not exist, or modify the value of the 3443 * existing row with that name. Note that internally setting values 3444 * are always stored as strings, so this function converts the given 3445 * value to a string before storing it. 3446 * 3447 * @param cr The ContentResolver to access. 3448 * @param name The name of the setting to modify. 3449 * @param value The new value for the setting. 3450 * @return true if the value was set, false on database errors 3451 */ putFloat(ContentResolver cr, String name, float value)3452 public static boolean putFloat(ContentResolver cr, String name, float value) { 3453 return putFloatForUser(cr, name, value, UserHandle.myUserId()); 3454 } 3455 3456 /** @hide */ putFloatForUser(ContentResolver cr, String name, float value, int userHandle)3457 public static boolean putFloatForUser(ContentResolver cr, String name, float value, 3458 int userHandle) { 3459 return putStringForUser(cr, name, Float.toString(value), userHandle); 3460 } 3461 3462 /** 3463 * @deprecated Use {@link android.provider.Settings.Global#DEVELOPMENT_SETTINGS_ENABLED} 3464 * instead 3465 */ 3466 @Deprecated 3467 public static final String DEVELOPMENT_SETTINGS_ENABLED = 3468 Global.DEVELOPMENT_SETTINGS_ENABLED; 3469 3470 /** 3471 * When the user has enable the option to have a "bug report" command 3472 * in the power menu. 3473 * @deprecated Use {@link android.provider.Settings.Global#BUGREPORT_IN_POWER_MENU} instead 3474 * @hide 3475 */ 3476 @Deprecated 3477 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu"; 3478 3479 /** 3480 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED} instead 3481 */ 3482 @Deprecated 3483 public static final String ADB_ENABLED = Global.ADB_ENABLED; 3484 3485 /** 3486 * Setting to allow mock locations and location provider status to be injected into the 3487 * LocationManager service for testing purposes during application development. These 3488 * locations and status values override actual location and status information generated 3489 * by network, gps, or other location providers. 3490 */ 3491 public static final String ALLOW_MOCK_LOCATION = "mock_location"; 3492 3493 /** 3494 * A 64-bit number (as a hex string) that is randomly 3495 * generated when the user first sets up the device and should remain 3496 * constant for the lifetime of the user's device. The value may 3497 * change if a factory reset is performed on the device. 3498 * <p class="note"><strong>Note:</strong> When a device has <a 3499 * href="{@docRoot}about/versions/android-4.2.html#MultipleUsers">multiple users</a> 3500 * (available on certain devices running Android 4.2 or higher), each user appears as a 3501 * completely separate device, so the {@code ANDROID_ID} value is unique to each 3502 * user.</p> 3503 */ 3504 public static final String ANDROID_ID = "android_id"; 3505 3506 /** 3507 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead 3508 */ 3509 @Deprecated 3510 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON; 3511 3512 /** 3513 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead 3514 */ 3515 @Deprecated 3516 public static final String DATA_ROAMING = Global.DATA_ROAMING; 3517 3518 /** 3519 * Setting to record the input method used by default, holding the ID 3520 * of the desired method. 3521 */ 3522 public static final String DEFAULT_INPUT_METHOD = "default_input_method"; 3523 3524 /** 3525 * Setting to record the input method subtype used by default, holding the ID 3526 * of the desired method. 3527 */ 3528 public static final String SELECTED_INPUT_METHOD_SUBTYPE = 3529 "selected_input_method_subtype"; 3530 3531 /** 3532 * Setting to record the history of input method subtype, holding the pair of ID of IME 3533 * and its last used subtype. 3534 * @hide 3535 */ 3536 public static final String INPUT_METHODS_SUBTYPE_HISTORY = 3537 "input_methods_subtype_history"; 3538 3539 /** 3540 * Setting to record the visibility of input method selector 3541 */ 3542 public static final String INPUT_METHOD_SELECTOR_VISIBILITY = 3543 "input_method_selector_visibility"; 3544 3545 /** 3546 * The currently selected voice interaction service flattened ComponentName. 3547 * @hide 3548 */ 3549 public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service"; 3550 3551 /** 3552 * bluetooth HCI snoop log configuration 3553 * @hide 3554 */ 3555 public static final String BLUETOOTH_HCI_LOG = 3556 "bluetooth_hci_log"; 3557 3558 /** 3559 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead 3560 */ 3561 @Deprecated 3562 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED; 3563 3564 /** 3565 * Whether the current user has been set up via setup wizard (0 = false, 1 = true) 3566 * @hide 3567 */ 3568 public static final String USER_SETUP_COMPLETE = "user_setup_complete"; 3569 3570 /** 3571 * List of input methods that are currently enabled. This is a string 3572 * containing the IDs of all enabled input methods, each ID separated 3573 * by ':'. 3574 */ 3575 public static final String ENABLED_INPUT_METHODS = "enabled_input_methods"; 3576 3577 /** 3578 * List of system input methods that are currently disabled. This is a string 3579 * containing the IDs of all disabled input methods, each ID separated 3580 * by ':'. 3581 * @hide 3582 */ 3583 public static final String DISABLED_SYSTEM_INPUT_METHODS = "disabled_system_input_methods"; 3584 3585 /** 3586 * Whether to show the IME when a hard keyboard is connected. This is a boolean that 3587 * determines if the IME should be shown when a hard keyboard is attached. 3588 * @hide 3589 */ 3590 public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard"; 3591 3592 /** 3593 * Host name and port for global http proxy. Uses ':' seperator for 3594 * between host and port. 3595 * 3596 * @deprecated Use {@link Global#HTTP_PROXY} 3597 */ 3598 @Deprecated 3599 public static final String HTTP_PROXY = Global.HTTP_PROXY; 3600 3601 /** 3602 * Whether applications can be installed for this user via the system's 3603 * {@link Intent#ACTION_INSTALL_PACKAGE} mechanism. 3604 * 3605 * <p>1 = permit app installation via the system package installer intent 3606 * <p>0 = do not allow use of the package installer 3607 */ 3608 public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; 3609 3610 /** 3611 * Comma-separated list of location providers that activities may access. Do not rely on 3612 * this value being present in settings.db or on ContentObserver notifications on the 3613 * corresponding Uri. 3614 * 3615 * @deprecated use {@link #LOCATION_MODE} and 3616 * {@link LocationManager#MODE_CHANGED_ACTION} (or 3617 * {@link LocationManager#PROVIDERS_CHANGED_ACTION}) 3618 */ 3619 @Deprecated 3620 public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed"; 3621 3622 /** 3623 * The degree of location access enabled by the user. 3624 * <p> 3625 * When used with {@link #putInt(ContentResolver, String, int)}, must be one of {@link 3626 * #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, {@link 3627 * #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. When used with {@link 3628 * #getInt(ContentResolver, String)}, the caller must gracefully handle additional location 3629 * modes that might be added in the future. 3630 * <p> 3631 * Note: do not rely on this value being present in settings.db or on ContentObserver 3632 * notifications for the corresponding Uri. Use {@link LocationManager#MODE_CHANGED_ACTION} 3633 * to receive changes in this value. 3634 */ 3635 public static final String LOCATION_MODE = "location_mode"; 3636 3637 /** 3638 * Location access disabled. 3639 */ 3640 public static final int LOCATION_MODE_OFF = 0; 3641 /** 3642 * Network Location Provider disabled, but GPS and other sensors enabled. 3643 */ 3644 public static final int LOCATION_MODE_SENSORS_ONLY = 1; 3645 /** 3646 * Reduced power usage, such as limiting the number of GPS updates per hour. Requests 3647 * with {@link android.location.Criteria#POWER_HIGH} may be downgraded to 3648 * {@link android.location.Criteria#POWER_MEDIUM}. 3649 */ 3650 public static final int LOCATION_MODE_BATTERY_SAVING = 2; 3651 /** 3652 * Best-effort location computation allowed. 3653 */ 3654 public static final int LOCATION_MODE_HIGH_ACCURACY = 3; 3655 3656 /** 3657 * A flag containing settings used for biometric weak 3658 * @hide 3659 */ 3660 public static final String LOCK_BIOMETRIC_WEAK_FLAGS = 3661 "lock_biometric_weak_flags"; 3662 3663 /** 3664 * Whether lock-to-app will lock the keyguard when exiting. 3665 * @hide 3666 */ 3667 public static final String LOCK_TO_APP_EXIT_LOCKED = "lock_to_app_exit_locked"; 3668 3669 /** 3670 * Whether autolock is enabled (0 = false, 1 = true) 3671 */ 3672 public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock"; 3673 3674 /** 3675 * Whether lock pattern is visible as user enters (0 = false, 1 = true) 3676 */ 3677 public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern"; 3678 3679 /** 3680 * Whether lock pattern will vibrate as user enters (0 = false, 1 = 3681 * true) 3682 * 3683 * @deprecated Starting in {@link VERSION_CODES#JELLY_BEAN_MR1} the 3684 * lockscreen uses 3685 * {@link Settings.System#HAPTIC_FEEDBACK_ENABLED}. 3686 */ 3687 @Deprecated 3688 public static final String 3689 LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled"; 3690 3691 /** 3692 * This preference allows the device to be locked given time after screen goes off, 3693 * subject to current DeviceAdmin policy limits. 3694 * @hide 3695 */ 3696 public static final String LOCK_SCREEN_LOCK_AFTER_TIMEOUT = "lock_screen_lock_after_timeout"; 3697 3698 3699 /** 3700 * This preference contains the string that shows for owner info on LockScreen. 3701 * @hide 3702 * @deprecated 3703 */ 3704 public static final String LOCK_SCREEN_OWNER_INFO = "lock_screen_owner_info"; 3705 3706 /** 3707 * Ids of the user-selected appwidgets on the lockscreen (comma-delimited). 3708 * @hide 3709 */ 3710 public static final String LOCK_SCREEN_APPWIDGET_IDS = 3711 "lock_screen_appwidget_ids"; 3712 3713 /** 3714 * List of enrolled fingerprint identifiers (comma-delimited). 3715 * @hide 3716 */ 3717 public static final String USER_FINGERPRINT_IDS = "user_fingerprint_ids"; 3718 3719 /** 3720 * Id of the appwidget shown on the lock screen when appwidgets are disabled. 3721 * @hide 3722 */ 3723 public static final String LOCK_SCREEN_FALLBACK_APPWIDGET_ID = 3724 "lock_screen_fallback_appwidget_id"; 3725 3726 /** 3727 * Index of the lockscreen appwidget to restore, -1 if none. 3728 * @hide 3729 */ 3730 public static final String LOCK_SCREEN_STICKY_APPWIDGET = 3731 "lock_screen_sticky_appwidget"; 3732 3733 /** 3734 * This preference enables showing the owner info on LockScreen. 3735 * @hide 3736 * @deprecated 3737 */ 3738 public static final String LOCK_SCREEN_OWNER_INFO_ENABLED = 3739 "lock_screen_owner_info_enabled"; 3740 3741 /** 3742 * When set by a user, allows notifications to be shown atop a securely locked screen 3743 * in their full "private" form (same as when the device is unlocked). 3744 * @hide 3745 */ 3746 public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = 3747 "lock_screen_allow_private_notifications"; 3748 3749 /** 3750 * Set by the system to track if the user needs to see the call to action for 3751 * the lockscreen notification policy. 3752 * @hide 3753 */ 3754 public static final String SHOW_NOTE_ABOUT_NOTIFICATION_HIDING = 3755 "show_note_about_notification_hiding"; 3756 3757 /** 3758 * Set to 1 by the system after trust agents have been initialized. 3759 * @hide 3760 */ 3761 public static final String TRUST_AGENTS_INITIALIZED = 3762 "trust_agents_initialized"; 3763 3764 /** 3765 * The Logging ID (a unique 64-bit value) as a hex string. 3766 * Used as a pseudonymous identifier for logging. 3767 * @deprecated This identifier is poorly initialized and has 3768 * many collisions. It should not be used. 3769 */ 3770 @Deprecated 3771 public static final String LOGGING_ID = "logging_id"; 3772 3773 /** 3774 * @deprecated Use {@link android.provider.Settings.Global#NETWORK_PREFERENCE} instead 3775 */ 3776 @Deprecated 3777 public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE; 3778 3779 /** 3780 * No longer supported. 3781 */ 3782 public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled"; 3783 3784 /** 3785 * No longer supported. 3786 */ 3787 public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update"; 3788 3789 /** 3790 * No longer supported. 3791 */ 3792 public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url"; 3793 3794 /** 3795 * Settings classname to launch when Settings is clicked from All 3796 * Applications. Needed because of user testing between the old 3797 * and new Settings apps. 3798 */ 3799 // TODO: 881807 3800 public static final String SETTINGS_CLASSNAME = "settings_classname"; 3801 3802 /** 3803 * @deprecated Use {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED} instead 3804 */ 3805 @Deprecated 3806 public static final String USB_MASS_STORAGE_ENABLED = Global.USB_MASS_STORAGE_ENABLED; 3807 3808 /** 3809 * @deprecated Use {@link android.provider.Settings.Global#USE_GOOGLE_MAIL} instead 3810 */ 3811 @Deprecated 3812 public static final String USE_GOOGLE_MAIL = Global.USE_GOOGLE_MAIL; 3813 3814 /** 3815 * If accessibility is enabled. 3816 */ 3817 public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled"; 3818 3819 /** 3820 * If touch exploration is enabled. 3821 */ 3822 public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled"; 3823 3824 /** 3825 * List of the enabled accessibility providers. 3826 */ 3827 public static final String ENABLED_ACCESSIBILITY_SERVICES = 3828 "enabled_accessibility_services"; 3829 3830 /** 3831 * List of the accessibility services to which the user has granted 3832 * permission to put the device into touch exploration mode. 3833 * 3834 * @hide 3835 */ 3836 public static final String TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES = 3837 "touch_exploration_granted_accessibility_services"; 3838 3839 /** 3840 * Whether to speak passwords while in accessibility mode. 3841 */ 3842 public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password"; 3843 3844 /** 3845 * Whether to draw text with high contrast while in accessibility mode. 3846 * 3847 * @hide 3848 */ 3849 public static final String ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED = 3850 "high_text_contrast_enabled"; 3851 3852 /** 3853 * If injection of accessibility enhancing JavaScript screen-reader 3854 * is enabled. 3855 * <p> 3856 * Note: The JavaScript based screen-reader is served by the 3857 * Google infrastructure and enable users with disabilities to 3858 * efficiently navigate in and explore web content. 3859 * </p> 3860 * <p> 3861 * This property represents a boolean value. 3862 * </p> 3863 * @hide 3864 */ 3865 public static final String ACCESSIBILITY_SCRIPT_INJECTION = 3866 "accessibility_script_injection"; 3867 3868 /** 3869 * The URL for the injected JavaScript based screen-reader used 3870 * for providing accessibility of content in WebView. 3871 * <p> 3872 * Note: The JavaScript based screen-reader is served by the 3873 * Google infrastructure and enable users with disabilities to 3874 * efficiently navigate in and explore web content. 3875 * </p> 3876 * <p> 3877 * This property represents a string value. 3878 * </p> 3879 * @hide 3880 */ 3881 public static final String ACCESSIBILITY_SCREEN_READER_URL = 3882 "accessibility_script_injection_url"; 3883 3884 /** 3885 * Key bindings for navigation in built-in accessibility support for web content. 3886 * <p> 3887 * Note: These key bindings are for the built-in accessibility navigation for 3888 * web content which is used as a fall back solution if JavaScript in a WebView 3889 * is not enabled or the user has not opted-in script injection from Google. 3890 * </p> 3891 * <p> 3892 * The bindings are separated by semi-colon. A binding is a mapping from 3893 * a key to a sequence of actions (for more details look at 3894 * android.webkit.AccessibilityInjector). A key is represented as the hexademical 3895 * string representation of an integer obtained from a meta state (optional) shifted 3896 * sixteen times left and bitwise ored with a key code. An action is represented 3897 * as a hexademical string representation of an integer where the first two digits 3898 * are navigation action index, the second, the third, and the fourth digit pairs 3899 * represent the action arguments. The separate actions in a binding are colon 3900 * separated. The key and the action sequence it maps to are separated by equals. 3901 * </p> 3902 * <p> 3903 * For example, the binding below maps the DPAD right button to traverse the 3904 * current navigation axis once without firing an accessibility event and to 3905 * perform the same traversal again but to fire an event: 3906 * <code> 3907 * 0x16=0x01000100:0x01000101; 3908 * </code> 3909 * </p> 3910 * <p> 3911 * The goal of this binding is to enable dynamic rebinding of keys to 3912 * navigation actions for web content without requiring a framework change. 3913 * </p> 3914 * <p> 3915 * This property represents a string value. 3916 * </p> 3917 * @hide 3918 */ 3919 public static final String ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS = 3920 "accessibility_web_content_key_bindings"; 3921 3922 /** 3923 * Setting that specifies whether the display magnification is enabled. 3924 * Display magnifications allows the user to zoom in the display content 3925 * and is targeted to low vision users. The current magnification scale 3926 * is controlled by {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE}. 3927 * 3928 * @hide 3929 */ 3930 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED = 3931 "accessibility_display_magnification_enabled"; 3932 3933 /** 3934 * Setting that specifies what the display magnification scale is. 3935 * Display magnifications allows the user to zoom in the display 3936 * content and is targeted to low vision users. Whether a display 3937 * magnification is performed is controlled by 3938 * {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED} 3939 * 3940 * @hide 3941 */ 3942 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE = 3943 "accessibility_display_magnification_scale"; 3944 3945 /** 3946 * Setting that specifies whether the display magnification should be 3947 * automatically updated. If this fearture is enabled the system will 3948 * exit magnification mode or pan the viewport when a context change 3949 * occurs. For example, on staring a new activity or rotating the screen, 3950 * the system may zoom out so the user can see the new context he is in. 3951 * Another example is on showing a window that is not visible in the 3952 * magnified viewport the system may pan the viewport to make the window 3953 * the has popped up so the user knows that the context has changed. 3954 * Whether a screen magnification is performed is controlled by 3955 * {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED} 3956 * 3957 * @hide 3958 */ 3959 public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE = 3960 "accessibility_display_magnification_auto_update"; 3961 3962 /** 3963 * Setting that specifies whether timed text (captions) should be 3964 * displayed in video content. Text display properties are controlled by 3965 * the following settings: 3966 * <ul> 3967 * <li>{@link #ACCESSIBILITY_CAPTIONING_LOCALE} 3968 * <li>{@link #ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR} 3969 * <li>{@link #ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR} 3970 * <li>{@link #ACCESSIBILITY_CAPTIONING_EDGE_COLOR} 3971 * <li>{@link #ACCESSIBILITY_CAPTIONING_EDGE_TYPE} 3972 * <li>{@link #ACCESSIBILITY_CAPTIONING_TYPEFACE} 3973 * <li>{@link #ACCESSIBILITY_CAPTIONING_FONT_SCALE} 3974 * </ul> 3975 * 3976 * @hide 3977 */ 3978 public static final String ACCESSIBILITY_CAPTIONING_ENABLED = 3979 "accessibility_captioning_enabled"; 3980 3981 /** 3982 * Setting that specifies the language for captions as a locale string, 3983 * e.g. en_US. 3984 * 3985 * @see java.util.Locale#toString 3986 * @hide 3987 */ 3988 public static final String ACCESSIBILITY_CAPTIONING_LOCALE = 3989 "accessibility_captioning_locale"; 3990 3991 /** 3992 * Integer property that specifies the preset style for captions, one 3993 * of: 3994 * <ul> 3995 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#PRESET_CUSTOM} 3996 * <li>a valid index of {@link android.view.accessibility.CaptioningManager.CaptionStyle#PRESETS} 3997 * </ul> 3998 * 3999 * @see java.util.Locale#toString 4000 * @hide 4001 */ 4002 public static final String ACCESSIBILITY_CAPTIONING_PRESET = 4003 "accessibility_captioning_preset"; 4004 4005 /** 4006 * Integer property that specifes the background color for captions as a 4007 * packed 32-bit color. 4008 * 4009 * @see android.graphics.Color#argb 4010 * @hide 4011 */ 4012 public static final String ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR = 4013 "accessibility_captioning_background_color"; 4014 4015 /** 4016 * Integer property that specifes the foreground color for captions as a 4017 * packed 32-bit color. 4018 * 4019 * @see android.graphics.Color#argb 4020 * @hide 4021 */ 4022 public static final String ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR = 4023 "accessibility_captioning_foreground_color"; 4024 4025 /** 4026 * Integer property that specifes the edge type for captions, one of: 4027 * <ul> 4028 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_NONE} 4029 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_OUTLINE} 4030 * <li>{@link android.view.accessibility.CaptioningManager.CaptionStyle#EDGE_TYPE_DROP_SHADOW} 4031 * </ul> 4032 * 4033 * @see #ACCESSIBILITY_CAPTIONING_EDGE_COLOR 4034 * @hide 4035 */ 4036 public static final String ACCESSIBILITY_CAPTIONING_EDGE_TYPE = 4037 "accessibility_captioning_edge_type"; 4038 4039 /** 4040 * Integer property that specifes the edge color for captions as a 4041 * packed 32-bit color. 4042 * 4043 * @see #ACCESSIBILITY_CAPTIONING_EDGE_TYPE 4044 * @see android.graphics.Color#argb 4045 * @hide 4046 */ 4047 public static final String ACCESSIBILITY_CAPTIONING_EDGE_COLOR = 4048 "accessibility_captioning_edge_color"; 4049 4050 /** 4051 * Integer property that specifes the window color for captions as a 4052 * packed 32-bit color. 4053 * 4054 * @see android.graphics.Color#argb 4055 * @hide 4056 */ 4057 public static final String ACCESSIBILITY_CAPTIONING_WINDOW_COLOR = 4058 "accessibility_captioning_window_color"; 4059 4060 /** 4061 * String property that specifies the typeface for captions, one of: 4062 * <ul> 4063 * <li>DEFAULT 4064 * <li>MONOSPACE 4065 * <li>SANS_SERIF 4066 * <li>SERIF 4067 * </ul> 4068 * 4069 * @see android.graphics.Typeface 4070 * @hide 4071 */ 4072 public static final String ACCESSIBILITY_CAPTIONING_TYPEFACE = 4073 "accessibility_captioning_typeface"; 4074 4075 /** 4076 * Floating point property that specifies font scaling for captions. 4077 * 4078 * @hide 4079 */ 4080 public static final String ACCESSIBILITY_CAPTIONING_FONT_SCALE = 4081 "accessibility_captioning_font_scale"; 4082 4083 /** 4084 * Setting that specifies whether display color inversion is enabled. 4085 */ 4086 public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED = 4087 "accessibility_display_inversion_enabled"; 4088 4089 /** 4090 * Setting that specifies whether display color space adjustment is 4091 * enabled. 4092 * 4093 * @hide 4094 */ 4095 public static final String ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED = 4096 "accessibility_display_daltonizer_enabled"; 4097 4098 /** 4099 * Integer property that specifies the type of color space adjustment to 4100 * perform. Valid values are defined in AccessibilityManager. 4101 * 4102 * @hide 4103 */ 4104 public static final String ACCESSIBILITY_DISPLAY_DALTONIZER = 4105 "accessibility_display_daltonizer"; 4106 4107 /** 4108 * The timout for considering a press to be a long press in milliseconds. 4109 * @hide 4110 */ 4111 public static final String LONG_PRESS_TIMEOUT = "long_press_timeout"; 4112 4113 /** 4114 * List of the enabled print services. 4115 * @hide 4116 */ 4117 public static final String ENABLED_PRINT_SERVICES = 4118 "enabled_print_services"; 4119 4120 /** 4121 * List of the system print services we enabled on first boot. On 4122 * first boot we enable all system, i.e. bundled print services, 4123 * once, so they work out-of-the-box. 4124 * @hide 4125 */ 4126 public static final String ENABLED_ON_FIRST_BOOT_SYSTEM_PRINT_SERVICES = 4127 "enabled_on_first_boot_system_print_services"; 4128 4129 /** 4130 * Setting to always use the default text-to-speech settings regardless 4131 * of the application settings. 4132 * 1 = override application settings, 4133 * 0 = use application settings (if specified). 4134 * 4135 * @deprecated The value of this setting is no longer respected by 4136 * the framework text to speech APIs as of the Ice Cream Sandwich release. 4137 */ 4138 @Deprecated 4139 public static final String TTS_USE_DEFAULTS = "tts_use_defaults"; 4140 4141 /** 4142 * Default text-to-speech engine speech rate. 100 = 1x 4143 */ 4144 public static final String TTS_DEFAULT_RATE = "tts_default_rate"; 4145 4146 /** 4147 * Default text-to-speech engine pitch. 100 = 1x 4148 */ 4149 public static final String TTS_DEFAULT_PITCH = "tts_default_pitch"; 4150 4151 /** 4152 * Default text-to-speech engine. 4153 */ 4154 public static final String TTS_DEFAULT_SYNTH = "tts_default_synth"; 4155 4156 /** 4157 * Default text-to-speech language. 4158 * 4159 * @deprecated this setting is no longer in use, as of the Ice Cream 4160 * Sandwich release. Apps should never need to read this setting directly, 4161 * instead can query the TextToSpeech framework classes for the default 4162 * locale. {@link TextToSpeech#getLanguage()}. 4163 */ 4164 @Deprecated 4165 public static final String TTS_DEFAULT_LANG = "tts_default_lang"; 4166 4167 /** 4168 * Default text-to-speech country. 4169 * 4170 * @deprecated this setting is no longer in use, as of the Ice Cream 4171 * Sandwich release. Apps should never need to read this setting directly, 4172 * instead can query the TextToSpeech framework classes for the default 4173 * locale. {@link TextToSpeech#getLanguage()}. 4174 */ 4175 @Deprecated 4176 public static final String TTS_DEFAULT_COUNTRY = "tts_default_country"; 4177 4178 /** 4179 * Default text-to-speech locale variant. 4180 * 4181 * @deprecated this setting is no longer in use, as of the Ice Cream 4182 * Sandwich release. Apps should never need to read this setting directly, 4183 * instead can query the TextToSpeech framework classes for the 4184 * locale that is in use {@link TextToSpeech#getLanguage()}. 4185 */ 4186 @Deprecated 4187 public static final String TTS_DEFAULT_VARIANT = "tts_default_variant"; 4188 4189 /** 4190 * Stores the default tts locales on a per engine basis. Stored as 4191 * a comma seperated list of values, each value being of the form 4192 * {@code engine_name:locale} for example, 4193 * {@code com.foo.ttsengine:eng-USA,com.bar.ttsengine:esp-ESP}. This 4194 * supersedes {@link #TTS_DEFAULT_LANG}, {@link #TTS_DEFAULT_COUNTRY} and 4195 * {@link #TTS_DEFAULT_VARIANT}. Apps should never need to read this 4196 * setting directly, and can query the TextToSpeech framework classes 4197 * for the locale that is in use. 4198 * 4199 * @hide 4200 */ 4201 public static final String TTS_DEFAULT_LOCALE = "tts_default_locale"; 4202 4203 /** 4204 * Space delimited list of plugin packages that are enabled. 4205 */ 4206 public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins"; 4207 4208 /** 4209 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON} 4210 * instead. 4211 */ 4212 @Deprecated 4213 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = 4214 Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON; 4215 4216 /** 4217 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} 4218 * instead. 4219 */ 4220 @Deprecated 4221 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = 4222 Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY; 4223 4224 /** 4225 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT} 4226 * instead. 4227 */ 4228 @Deprecated 4229 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = 4230 Global.WIFI_NUM_OPEN_NETWORKS_KEPT; 4231 4232 /** 4233 * @deprecated Use {@link android.provider.Settings.Global#WIFI_ON} 4234 * instead. 4235 */ 4236 @Deprecated 4237 public static final String WIFI_ON = Global.WIFI_ON; 4238 4239 /** 4240 * The acceptable packet loss percentage (range 0 - 100) before trying 4241 * another AP on the same network. 4242 * @deprecated This setting is not used. 4243 */ 4244 @Deprecated 4245 public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = 4246 "wifi_watchdog_acceptable_packet_loss_percentage"; 4247 4248 /** 4249 * The number of access points required for a network in order for the 4250 * watchdog to monitor it. 4251 * @deprecated This setting is not used. 4252 */ 4253 @Deprecated 4254 public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count"; 4255 4256 /** 4257 * The delay between background checks. 4258 * @deprecated This setting is not used. 4259 */ 4260 @Deprecated 4261 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = 4262 "wifi_watchdog_background_check_delay_ms"; 4263 4264 /** 4265 * Whether the Wi-Fi watchdog is enabled for background checking even 4266 * after it thinks the user has connected to a good access point. 4267 * @deprecated This setting is not used. 4268 */ 4269 @Deprecated 4270 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = 4271 "wifi_watchdog_background_check_enabled"; 4272 4273 /** 4274 * The timeout for a background ping 4275 * @deprecated This setting is not used. 4276 */ 4277 @Deprecated 4278 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = 4279 "wifi_watchdog_background_check_timeout_ms"; 4280 4281 /** 4282 * The number of initial pings to perform that *may* be ignored if they 4283 * fail. Again, if these fail, they will *not* be used in packet loss 4284 * calculation. For example, one network always seemed to time out for 4285 * the first couple pings, so this is set to 3 by default. 4286 * @deprecated This setting is not used. 4287 */ 4288 @Deprecated 4289 public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = 4290 "wifi_watchdog_initial_ignored_ping_count"; 4291 4292 /** 4293 * The maximum number of access points (per network) to attempt to test. 4294 * If this number is reached, the watchdog will no longer monitor the 4295 * initial connection state for the network. This is a safeguard for 4296 * networks containing multiple APs whose DNS does not respond to pings. 4297 * @deprecated This setting is not used. 4298 */ 4299 @Deprecated 4300 public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks"; 4301 4302 /** 4303 * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead 4304 */ 4305 @Deprecated 4306 public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on"; 4307 4308 /** 4309 * A comma-separated list of SSIDs for which the Wi-Fi watchdog should be enabled. 4310 * @deprecated This setting is not used. 4311 */ 4312 @Deprecated 4313 public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list"; 4314 4315 /** 4316 * The number of pings to test if an access point is a good connection. 4317 * @deprecated This setting is not used. 4318 */ 4319 @Deprecated 4320 public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count"; 4321 4322 /** 4323 * The delay between pings. 4324 * @deprecated This setting is not used. 4325 */ 4326 @Deprecated 4327 public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms"; 4328 4329 /** 4330 * The timeout per ping. 4331 * @deprecated This setting is not used. 4332 */ 4333 @Deprecated 4334 public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms"; 4335 4336 /** 4337 * @deprecated Use 4338 * {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead 4339 */ 4340 @Deprecated 4341 public static final String WIFI_MAX_DHCP_RETRY_COUNT = Global.WIFI_MAX_DHCP_RETRY_COUNT; 4342 4343 /** 4344 * @deprecated Use 4345 * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead 4346 */ 4347 @Deprecated 4348 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = 4349 Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS; 4350 4351 /** 4352 * The number of milliseconds to hold on to a PendingIntent based request. This delay gives 4353 * the receivers of the PendingIntent an opportunity to make a new network request before 4354 * the Network satisfying the request is potentially removed. 4355 * 4356 * @hide 4357 */ 4358 public static final String CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS = 4359 "connectivity_release_pending_intent_delay_ms"; 4360 4361 /** 4362 * Whether background data usage is allowed. 4363 * 4364 * @deprecated As of {@link VERSION_CODES#ICE_CREAM_SANDWICH}, 4365 * availability of background data depends on several 4366 * combined factors. When background data is unavailable, 4367 * {@link ConnectivityManager#getActiveNetworkInfo()} will 4368 * now appear disconnected. 4369 */ 4370 @Deprecated 4371 public static final String BACKGROUND_DATA = "background_data"; 4372 4373 /** 4374 * Origins for which browsers should allow geolocation by default. 4375 * The value is a space-separated list of origins. 4376 */ 4377 public static final String ALLOWED_GEOLOCATION_ORIGINS 4378 = "allowed_geolocation_origins"; 4379 4380 /** 4381 * The preferred TTY mode 0 = TTy Off, CDMA default 4382 * 1 = TTY Full 4383 * 2 = TTY HCO 4384 * 3 = TTY VCO 4385 * @hide 4386 */ 4387 public static final String PREFERRED_TTY_MODE = 4388 "preferred_tty_mode"; 4389 4390 /** 4391 * Whether the enhanced voice privacy mode is enabled. 4392 * 0 = normal voice privacy 4393 * 1 = enhanced voice privacy 4394 * @hide 4395 */ 4396 public static final String ENHANCED_VOICE_PRIVACY_ENABLED = "enhanced_voice_privacy_enabled"; 4397 4398 /** 4399 * Whether the TTY mode mode is enabled. 4400 * 0 = disabled 4401 * 1 = enabled 4402 * @hide 4403 */ 4404 public static final String TTY_MODE_ENABLED = "tty_mode_enabled"; 4405 4406 /** 4407 * Controls whether settings backup is enabled. 4408 * Type: int ( 0 = disabled, 1 = enabled ) 4409 * @hide 4410 */ 4411 public static final String BACKUP_ENABLED = "backup_enabled"; 4412 4413 /** 4414 * Controls whether application data is automatically restored from backup 4415 * at install time. 4416 * Type: int ( 0 = disabled, 1 = enabled ) 4417 * @hide 4418 */ 4419 public static final String BACKUP_AUTO_RESTORE = "backup_auto_restore"; 4420 4421 /** 4422 * Indicates whether settings backup has been fully provisioned. 4423 * Type: int ( 0 = unprovisioned, 1 = fully provisioned ) 4424 * @hide 4425 */ 4426 public static final String BACKUP_PROVISIONED = "backup_provisioned"; 4427 4428 /** 4429 * Component of the transport to use for backup/restore. 4430 * @hide 4431 */ 4432 public static final String BACKUP_TRANSPORT = "backup_transport"; 4433 4434 /** 4435 * Version for which the setup wizard was last shown. Bumped for 4436 * each release when there is new setup information to show. 4437 * @hide 4438 */ 4439 public static final String LAST_SETUP_SHOWN = "last_setup_shown"; 4440 4441 /** 4442 * The interval in milliseconds after which Wi-Fi is considered idle. 4443 * When idle, it is possible for the device to be switched from Wi-Fi to 4444 * the mobile data network. 4445 * @hide 4446 * @deprecated Use {@link android.provider.Settings.Global#WIFI_IDLE_MS} 4447 * instead. 4448 */ 4449 @Deprecated 4450 public static final String WIFI_IDLE_MS = Global.WIFI_IDLE_MS; 4451 4452 /** 4453 * The global search provider chosen by the user (if multiple global 4454 * search providers are installed). This will be the provider returned 4455 * by {@link SearchManager#getGlobalSearchActivity()} if it's still 4456 * installed. This setting is stored as a flattened component name as 4457 * per {@link ComponentName#flattenToString()}. 4458 * 4459 * @hide 4460 */ 4461 public static final String SEARCH_GLOBAL_SEARCH_ACTIVITY = 4462 "search_global_search_activity"; 4463 4464 /** 4465 * The number of promoted sources in GlobalSearch. 4466 * @hide 4467 */ 4468 public static final String SEARCH_NUM_PROMOTED_SOURCES = "search_num_promoted_sources"; 4469 /** 4470 * The maximum number of suggestions returned by GlobalSearch. 4471 * @hide 4472 */ 4473 public static final String SEARCH_MAX_RESULTS_TO_DISPLAY = "search_max_results_to_display"; 4474 /** 4475 * The number of suggestions GlobalSearch will ask each non-web search source for. 4476 * @hide 4477 */ 4478 public static final String SEARCH_MAX_RESULTS_PER_SOURCE = "search_max_results_per_source"; 4479 /** 4480 * The number of suggestions the GlobalSearch will ask the web search source for. 4481 * @hide 4482 */ 4483 public static final String SEARCH_WEB_RESULTS_OVERRIDE_LIMIT = 4484 "search_web_results_override_limit"; 4485 /** 4486 * The number of milliseconds that GlobalSearch will wait for suggestions from 4487 * promoted sources before continuing with all other sources. 4488 * @hide 4489 */ 4490 public static final String SEARCH_PROMOTED_SOURCE_DEADLINE_MILLIS = 4491 "search_promoted_source_deadline_millis"; 4492 /** 4493 * The number of milliseconds before GlobalSearch aborts search suggesiton queries. 4494 * @hide 4495 */ 4496 public static final String SEARCH_SOURCE_TIMEOUT_MILLIS = "search_source_timeout_millis"; 4497 /** 4498 * The maximum number of milliseconds that GlobalSearch shows the previous results 4499 * after receiving a new query. 4500 * @hide 4501 */ 4502 public static final String SEARCH_PREFILL_MILLIS = "search_prefill_millis"; 4503 /** 4504 * The maximum age of log data used for shortcuts in GlobalSearch. 4505 * @hide 4506 */ 4507 public static final String SEARCH_MAX_STAT_AGE_MILLIS = "search_max_stat_age_millis"; 4508 /** 4509 * The maximum age of log data used for source ranking in GlobalSearch. 4510 * @hide 4511 */ 4512 public static final String SEARCH_MAX_SOURCE_EVENT_AGE_MILLIS = 4513 "search_max_source_event_age_millis"; 4514 /** 4515 * The minimum number of impressions needed to rank a source in GlobalSearch. 4516 * @hide 4517 */ 4518 public static final String SEARCH_MIN_IMPRESSIONS_FOR_SOURCE_RANKING = 4519 "search_min_impressions_for_source_ranking"; 4520 /** 4521 * The minimum number of clicks needed to rank a source in GlobalSearch. 4522 * @hide 4523 */ 4524 public static final String SEARCH_MIN_CLICKS_FOR_SOURCE_RANKING = 4525 "search_min_clicks_for_source_ranking"; 4526 /** 4527 * The maximum number of shortcuts shown by GlobalSearch. 4528 * @hide 4529 */ 4530 public static final String SEARCH_MAX_SHORTCUTS_RETURNED = "search_max_shortcuts_returned"; 4531 /** 4532 * The size of the core thread pool for suggestion queries in GlobalSearch. 4533 * @hide 4534 */ 4535 public static final String SEARCH_QUERY_THREAD_CORE_POOL_SIZE = 4536 "search_query_thread_core_pool_size"; 4537 /** 4538 * The maximum size of the thread pool for suggestion queries in GlobalSearch. 4539 * @hide 4540 */ 4541 public static final String SEARCH_QUERY_THREAD_MAX_POOL_SIZE = 4542 "search_query_thread_max_pool_size"; 4543 /** 4544 * The size of the core thread pool for shortcut refreshing in GlobalSearch. 4545 * @hide 4546 */ 4547 public static final String SEARCH_SHORTCUT_REFRESH_CORE_POOL_SIZE = 4548 "search_shortcut_refresh_core_pool_size"; 4549 /** 4550 * The maximum size of the thread pool for shortcut refreshing in GlobalSearch. 4551 * @hide 4552 */ 4553 public static final String SEARCH_SHORTCUT_REFRESH_MAX_POOL_SIZE = 4554 "search_shortcut_refresh_max_pool_size"; 4555 /** 4556 * The maximun time that excess threads in the GlobalSeach thread pools will 4557 * wait before terminating. 4558 * @hide 4559 */ 4560 public static final String SEARCH_THREAD_KEEPALIVE_SECONDS = 4561 "search_thread_keepalive_seconds"; 4562 /** 4563 * The maximum number of concurrent suggestion queries to each source. 4564 * @hide 4565 */ 4566 public static final String SEARCH_PER_SOURCE_CONCURRENT_QUERY_LIMIT = 4567 "search_per_source_concurrent_query_limit"; 4568 4569 /** 4570 * Whether or not alert sounds are played on MountService events. (0 = false, 1 = true) 4571 * @hide 4572 */ 4573 public static final String MOUNT_PLAY_NOTIFICATION_SND = "mount_play_not_snd"; 4574 4575 /** 4576 * Whether or not UMS auto-starts on UMS host detection. (0 = false, 1 = true) 4577 * @hide 4578 */ 4579 public static final String MOUNT_UMS_AUTOSTART = "mount_ums_autostart"; 4580 4581 /** 4582 * Whether or not a notification is displayed on UMS host detection. (0 = false, 1 = true) 4583 * @hide 4584 */ 4585 public static final String MOUNT_UMS_PROMPT = "mount_ums_prompt"; 4586 4587 /** 4588 * Whether or not a notification is displayed while UMS is enabled. (0 = false, 1 = true) 4589 * @hide 4590 */ 4591 public static final String MOUNT_UMS_NOTIFY_ENABLED = "mount_ums_notify_enabled"; 4592 4593 /** 4594 * If nonzero, ANRs in invisible background processes bring up a dialog. 4595 * Otherwise, the process will be silently killed. 4596 * @hide 4597 */ 4598 public static final String ANR_SHOW_BACKGROUND = "anr_show_background"; 4599 4600 /** 4601 * The {@link ComponentName} string of the service to be used as the voice recognition 4602 * service. 4603 * 4604 * @hide 4605 */ 4606 public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service"; 4607 4608 /** 4609 * Stores whether an user has consented to have apps verified through PAM. 4610 * The value is boolean (1 or 0). 4611 * 4612 * @hide 4613 */ 4614 public static final String PACKAGE_VERIFIER_USER_CONSENT = 4615 "package_verifier_user_consent"; 4616 4617 /** 4618 * The {@link ComponentName} string of the selected spell checker service which is 4619 * one of the services managed by the text service manager. 4620 * 4621 * @hide 4622 */ 4623 public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker"; 4624 4625 /** 4626 * The {@link ComponentName} string of the selected subtype of the selected spell checker 4627 * service which is one of the services managed by the text service manager. 4628 * 4629 * @hide 4630 */ 4631 public static final String SELECTED_SPELL_CHECKER_SUBTYPE = 4632 "selected_spell_checker_subtype"; 4633 4634 /** 4635 * The {@link ComponentName} string whether spell checker is enabled or not. 4636 * 4637 * @hide 4638 */ 4639 public static final String SPELL_CHECKER_ENABLED = "spell_checker_enabled"; 4640 4641 /** 4642 * What happens when the user presses the Power button while in-call 4643 * and the screen is on.<br/> 4644 * <b>Values:</b><br/> 4645 * 1 - The Power button turns off the screen and locks the device. (Default behavior)<br/> 4646 * 2 - The Power button hangs up the current call.<br/> 4647 * 4648 * @hide 4649 */ 4650 public static final String INCALL_POWER_BUTTON_BEHAVIOR = "incall_power_button_behavior"; 4651 4652 /** 4653 * INCALL_POWER_BUTTON_BEHAVIOR value for "turn off screen". 4654 * @hide 4655 */ 4656 public static final int INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF = 0x1; 4657 4658 /** 4659 * INCALL_POWER_BUTTON_BEHAVIOR value for "hang up". 4660 * @hide 4661 */ 4662 public static final int INCALL_POWER_BUTTON_BEHAVIOR_HANGUP = 0x2; 4663 4664 /** 4665 * INCALL_POWER_BUTTON_BEHAVIOR default value. 4666 * @hide 4667 */ 4668 public static final int INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT = 4669 INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF; 4670 4671 /** 4672 * Whether the device should wake when the wake gesture sensor detects motion. 4673 * @hide 4674 */ 4675 public static final String WAKE_GESTURE_ENABLED = "wake_gesture_enabled"; 4676 4677 /** 4678 * Whether the device should doze if configured. 4679 * @hide 4680 */ 4681 public static final String DOZE_ENABLED = "doze_enabled"; 4682 4683 /** 4684 * The current night mode that has been selected by the user. Owned 4685 * and controlled by UiModeManagerService. Constants are as per 4686 * UiModeManager. 4687 * @hide 4688 */ 4689 public static final String UI_NIGHT_MODE = "ui_night_mode"; 4690 4691 /** 4692 * Whether screensavers are enabled. 4693 * @hide 4694 */ 4695 public static final String SCREENSAVER_ENABLED = "screensaver_enabled"; 4696 4697 /** 4698 * The user's chosen screensaver components. 4699 * 4700 * These will be launched by the PhoneWindowManager after a timeout when not on 4701 * battery, or upon dock insertion (if SCREENSAVER_ACTIVATE_ON_DOCK is set to 1). 4702 * @hide 4703 */ 4704 public static final String SCREENSAVER_COMPONENTS = "screensaver_components"; 4705 4706 /** 4707 * If screensavers are enabled, whether the screensaver should be automatically launched 4708 * when the device is inserted into a (desk) dock. 4709 * @hide 4710 */ 4711 public static final String SCREENSAVER_ACTIVATE_ON_DOCK = "screensaver_activate_on_dock"; 4712 4713 /** 4714 * If screensavers are enabled, whether the screensaver should be automatically launched 4715 * when the screen times out when not on battery. 4716 * @hide 4717 */ 4718 public static final String SCREENSAVER_ACTIVATE_ON_SLEEP = "screensaver_activate_on_sleep"; 4719 4720 /** 4721 * If screensavers are enabled, the default screensaver component. 4722 * @hide 4723 */ 4724 public static final String SCREENSAVER_DEFAULT_COMPONENT = "screensaver_default_component"; 4725 4726 /** 4727 * The default NFC payment component 4728 * @hide 4729 */ 4730 public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component"; 4731 4732 /** 4733 * Whether NFC payment is handled by the foreground application or a default. 4734 * @hide 4735 */ 4736 public static final String NFC_PAYMENT_FOREGROUND = "nfc_payment_foreground"; 4737 4738 /** 4739 * Specifies the package name currently configured to be the primary sms application 4740 * @hide 4741 */ 4742 public static final String SMS_DEFAULT_APPLICATION = "sms_default_application"; 4743 4744 /** 4745 * Names of the packages that the current user has explicitly allowed to 4746 * see all of the user's notifications, separated by ':'. 4747 * 4748 * @hide 4749 */ 4750 public static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners"; 4751 4752 /** 4753 * @hide 4754 */ 4755 public static final String ENABLED_CONDITION_PROVIDERS = "enabled_condition_providers"; 4756 4757 /** @hide */ 4758 public static final String BAR_SERVICE_COMPONENT = "bar_service_component"; 4759 4760 /** @hide */ 4761 public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations"; 4762 4763 /** 4764 * This is the query URI for finding a print service to install. 4765 * 4766 * @hide 4767 */ 4768 public static final String PRINT_SERVICE_SEARCH_URI = "print_service_search_uri"; 4769 4770 /** 4771 * This is the query URI for finding a NFC payment service to install. 4772 * 4773 * @hide 4774 */ 4775 public static final String PAYMENT_SERVICE_SEARCH_URI = "payment_service_search_uri"; 4776 4777 /** 4778 * If enabled, apps should try to skip any introductory hints on first launch. This might 4779 * apply to users that are already familiar with the environment or temporary users. 4780 * <p> 4781 * Type : int (0 to show hints, 1 to skip showing hints) 4782 */ 4783 public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints"; 4784 4785 /** 4786 * Persisted playback time after a user confirmation of an unsafe volume level. 4787 * 4788 * @hide 4789 */ 4790 public static final String UNSAFE_VOLUME_MUSIC_ACTIVE_MS = "unsafe_volume_music_active_ms"; 4791 4792 /** 4793 * This preference enables notification display on the lockscreen. 4794 * @hide 4795 */ 4796 public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = 4797 "lock_screen_show_notifications"; 4798 4799 /** 4800 * List of TV inputs that are currently hidden. This is a string 4801 * containing the IDs of all hidden TV inputs. Each ID is encoded by 4802 * {@link android.net.Uri#encode(String)} and separated by ':'. 4803 * @hide 4804 */ 4805 public static final String TV_INPUT_HIDDEN_INPUTS = "tv_input_hidden_inputs"; 4806 4807 /** 4808 * List of custom TV input labels. This is a string containing <TV input id, custom name> 4809 * pairs. TV input id and custom name are encoded by {@link android.net.Uri#encode(String)} 4810 * and separated by ','. Each pair is separated by ':'. 4811 * @hide 4812 */ 4813 public static final String TV_INPUT_CUSTOM_LABELS = "tv_input_custom_labels"; 4814 4815 /** 4816 * Whether automatic routing of system audio to USB audio peripheral is disabled. 4817 * The value is boolean (1 or 0), where 1 means automatic routing is disabled, 4818 * and 0 means automatic routing is enabled. 4819 * 4820 * @hide 4821 */ 4822 public static final String USB_AUDIO_AUTOMATIC_ROUTING_DISABLED = 4823 "usb_audio_automatic_routing_disabled"; 4824 4825 /** 4826 * The timeout in milliseconds before the device fully goes to sleep after 4827 * a period of inactivity. This value sets an upper bound on how long the device 4828 * will stay awake or dreaming without user activity. It should generally 4829 * be longer than {@link Settings.System#SCREEN_OFF_TIMEOUT} as otherwise the device 4830 * will sleep before it ever has a chance to dream. 4831 * <p> 4832 * Use -1 to disable this timeout. 4833 * </p> 4834 * 4835 * @hide 4836 */ 4837 public static final String SLEEP_TIMEOUT = "sleep_timeout"; 4838 4839 /** 4840 * This are the settings to be backed up. 4841 * 4842 * NOTE: Settings are backed up and restored in the order they appear 4843 * in this array. If you have one setting depending on another, 4844 * make sure that they are ordered appropriately. 4845 * 4846 * @hide 4847 */ 4848 public static final String[] SETTINGS_TO_BACKUP = { 4849 BUGREPORT_IN_POWER_MENU, // moved to global 4850 ALLOW_MOCK_LOCATION, 4851 PARENTAL_CONTROL_ENABLED, 4852 PARENTAL_CONTROL_REDIRECT_URL, 4853 USB_MASS_STORAGE_ENABLED, // moved to global 4854 ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 4855 ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 4856 ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, 4857 ACCESSIBILITY_SCRIPT_INJECTION, 4858 BACKUP_AUTO_RESTORE, 4859 ENABLED_ACCESSIBILITY_SERVICES, 4860 TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, 4861 TOUCH_EXPLORATION_ENABLED, 4862 ACCESSIBILITY_ENABLED, 4863 ACCESSIBILITY_SPEAK_PASSWORD, 4864 ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, 4865 ACCESSIBILITY_CAPTIONING_ENABLED, 4866 ACCESSIBILITY_CAPTIONING_LOCALE, 4867 ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR, 4868 ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR, 4869 ACCESSIBILITY_CAPTIONING_EDGE_TYPE, 4870 ACCESSIBILITY_CAPTIONING_EDGE_COLOR, 4871 ACCESSIBILITY_CAPTIONING_TYPEFACE, 4872 ACCESSIBILITY_CAPTIONING_FONT_SCALE, 4873 TTS_USE_DEFAULTS, 4874 TTS_DEFAULT_RATE, 4875 TTS_DEFAULT_PITCH, 4876 TTS_DEFAULT_SYNTH, 4877 TTS_DEFAULT_LANG, 4878 TTS_DEFAULT_COUNTRY, 4879 TTS_ENABLED_PLUGINS, 4880 TTS_DEFAULT_LOCALE, 4881 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, // moved to global 4882 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, // moved to global 4883 WIFI_NUM_OPEN_NETWORKS_KEPT, // moved to global 4884 MOUNT_PLAY_NOTIFICATION_SND, 4885 MOUNT_UMS_AUTOSTART, 4886 MOUNT_UMS_PROMPT, 4887 MOUNT_UMS_NOTIFY_ENABLED, 4888 UI_NIGHT_MODE, 4889 SLEEP_TIMEOUT 4890 }; 4891 4892 /** 4893 * These entries are considered common between the personal and the managed profile, 4894 * since the managed profile doesn't get to change them. 4895 * @hide 4896 */ 4897 public static final String[] CLONE_TO_MANAGED_PROFILE = { 4898 ACCESSIBILITY_ENABLED, 4899 ALLOW_MOCK_LOCATION, 4900 ALLOWED_GEOLOCATION_ORIGINS, 4901 DEFAULT_INPUT_METHOD, 4902 ENABLED_ACCESSIBILITY_SERVICES, 4903 ENABLED_INPUT_METHODS, 4904 LOCATION_MODE, 4905 LOCATION_PROVIDERS_ALLOWED, 4906 LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 4907 SELECTED_INPUT_METHOD_SUBTYPE, 4908 SELECTED_SPELL_CHECKER, 4909 SELECTED_SPELL_CHECKER_SUBTYPE 4910 }; 4911 4912 /** 4913 * Helper method for determining if a location provider is enabled. 4914 * 4915 * @param cr the content resolver to use 4916 * @param provider the location provider to query 4917 * @return true if the provider is enabled 4918 * 4919 * @deprecated use {@link #LOCATION_MODE} or 4920 * {@link LocationManager#isProviderEnabled(String)} 4921 */ 4922 @Deprecated isLocationProviderEnabled(ContentResolver cr, String provider)4923 public static final boolean isLocationProviderEnabled(ContentResolver cr, String provider) { 4924 return isLocationProviderEnabledForUser(cr, provider, UserHandle.myUserId()); 4925 } 4926 4927 /** 4928 * Helper method for determining if a location provider is enabled. 4929 * @param cr the content resolver to use 4930 * @param provider the location provider to query 4931 * @param userId the userId to query 4932 * @return true if the provider is enabled 4933 * @deprecated use {@link #LOCATION_MODE} or 4934 * {@link LocationManager#isProviderEnabled(String)} 4935 * @hide 4936 */ 4937 @Deprecated isLocationProviderEnabledForUser(ContentResolver cr, String provider, int userId)4938 public static final boolean isLocationProviderEnabledForUser(ContentResolver cr, String provider, int userId) { 4939 String allowedProviders = Settings.Secure.getStringForUser(cr, 4940 LOCATION_PROVIDERS_ALLOWED, userId); 4941 return TextUtils.delimitedStringContains(allowedProviders, ',', provider); 4942 } 4943 4944 /** 4945 * Thread-safe method for enabling or disabling a single location provider. 4946 * @param cr the content resolver to use 4947 * @param provider the location provider to enable or disable 4948 * @param enabled true if the provider should be enabled 4949 * @deprecated use {@link #putInt(ContentResolver, String, int)} and {@link #LOCATION_MODE} 4950 */ 4951 @Deprecated setLocationProviderEnabled(ContentResolver cr, String provider, boolean enabled)4952 public static final void setLocationProviderEnabled(ContentResolver cr, 4953 String provider, boolean enabled) { 4954 setLocationProviderEnabledForUser(cr, provider, enabled, UserHandle.myUserId()); 4955 } 4956 4957 /** 4958 * Thread-safe method for enabling or disabling a single location provider. 4959 * 4960 * @param cr the content resolver to use 4961 * @param provider the location provider to enable or disable 4962 * @param enabled true if the provider should be enabled 4963 * @param userId the userId for which to enable/disable providers 4964 * @return true if the value was set, false on database errors 4965 * @deprecated use {@link #putIntForUser(ContentResolver, String, int, int)} and 4966 * {@link #LOCATION_MODE} 4967 * @hide 4968 */ 4969 @Deprecated setLocationProviderEnabledForUser(ContentResolver cr, String provider, boolean enabled, int userId)4970 public static final boolean setLocationProviderEnabledForUser(ContentResolver cr, 4971 String provider, boolean enabled, int userId) { 4972 synchronized (mLocationSettingsLock) { 4973 // to ensure thread safety, we write the provider name with a '+' or '-' 4974 // and let the SettingsProvider handle it rather than reading and modifying 4975 // the list of enabled providers. 4976 if (enabled) { 4977 provider = "+" + provider; 4978 } else { 4979 provider = "-" + provider; 4980 } 4981 return putStringForUser(cr, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, provider, 4982 userId); 4983 } 4984 } 4985 4986 /** 4987 * Thread-safe method for setting the location mode to one of 4988 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, 4989 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. 4990 * 4991 * @param cr the content resolver to use 4992 * @param mode such as {@link #LOCATION_MODE_HIGH_ACCURACY} 4993 * @param userId the userId for which to change mode 4994 * @return true if the value was set, false on database errors 4995 * 4996 * @throws IllegalArgumentException if mode is not one of the supported values 4997 */ setLocationModeForUser(ContentResolver cr, int mode, int userId)4998 private static final boolean setLocationModeForUser(ContentResolver cr, int mode, 4999 int userId) { 5000 synchronized (mLocationSettingsLock) { 5001 boolean gps = false; 5002 boolean network = false; 5003 switch (mode) { 5004 case LOCATION_MODE_OFF: 5005 break; 5006 case LOCATION_MODE_SENSORS_ONLY: 5007 gps = true; 5008 break; 5009 case LOCATION_MODE_BATTERY_SAVING: 5010 network = true; 5011 break; 5012 case LOCATION_MODE_HIGH_ACCURACY: 5013 gps = true; 5014 network = true; 5015 break; 5016 default: 5017 throw new IllegalArgumentException("Invalid location mode: " + mode); 5018 } 5019 // Note it's important that we set the NLP mode first. The Google implementation 5020 // of NLP clears its NLP consent setting any time it receives a 5021 // LocationManager.PROVIDERS_CHANGED_ACTION broadcast and NLP is disabled. Also, 5022 // it shows an NLP consent dialog any time it receives the broadcast, NLP is 5023 // enabled, and the NLP consent is not set. If 1) we were to enable GPS first, 5024 // 2) a setup wizard has its own NLP consent UI that sets the NLP consent setting, 5025 // and 3) the receiver happened to complete before we enabled NLP, then the Google 5026 // NLP would detect the attempt to enable NLP and show a redundant NLP consent 5027 // dialog. Then the people who wrote the setup wizard would be sad. 5028 boolean nlpSuccess = Settings.Secure.setLocationProviderEnabledForUser( 5029 cr, LocationManager.NETWORK_PROVIDER, network, userId); 5030 boolean gpsSuccess = Settings.Secure.setLocationProviderEnabledForUser( 5031 cr, LocationManager.GPS_PROVIDER, gps, userId); 5032 return gpsSuccess && nlpSuccess; 5033 } 5034 } 5035 5036 /** 5037 * Thread-safe method for reading the location mode, returns one of 5038 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, 5039 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. 5040 * 5041 * @param cr the content resolver to use 5042 * @param userId the userId for which to read the mode 5043 * @return the location mode 5044 */ getLocationModeForUser(ContentResolver cr, int userId)5045 private static final int getLocationModeForUser(ContentResolver cr, int userId) { 5046 synchronized (mLocationSettingsLock) { 5047 boolean gpsEnabled = Settings.Secure.isLocationProviderEnabledForUser( 5048 cr, LocationManager.GPS_PROVIDER, userId); 5049 boolean networkEnabled = Settings.Secure.isLocationProviderEnabledForUser( 5050 cr, LocationManager.NETWORK_PROVIDER, userId); 5051 if (gpsEnabled && networkEnabled) { 5052 return LOCATION_MODE_HIGH_ACCURACY; 5053 } else if (gpsEnabled) { 5054 return LOCATION_MODE_SENSORS_ONLY; 5055 } else if (networkEnabled) { 5056 return LOCATION_MODE_BATTERY_SAVING; 5057 } else { 5058 return LOCATION_MODE_OFF; 5059 } 5060 } 5061 } 5062 } 5063 5064 /** 5065 * Global system settings, containing preferences that always apply identically 5066 * to all defined users. Applications can read these but are not allowed to write; 5067 * like the "Secure" settings, these are for preferences that the user must 5068 * explicitly modify through the system UI or specialized APIs for those values. 5069 */ 5070 public static final class Global extends NameValueTable { 5071 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_global_version"; 5072 5073 /** 5074 * The content:// style URL for global secure settings items. Not public. 5075 */ 5076 public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/global"); 5077 5078 /** 5079 * Whether users are allowed to add more users or guest from lockscreen. 5080 * <p> 5081 * Type: int 5082 * @hide 5083 */ 5084 public static final String ADD_USERS_WHEN_LOCKED = "add_users_when_locked"; 5085 5086 /** 5087 * Setting whether the global gesture for enabling accessibility is enabled. 5088 * If this gesture is enabled the user will be able to perfrom it to enable 5089 * the accessibility state without visiting the settings app. 5090 * @hide 5091 */ 5092 public static final String ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED = 5093 "enable_accessibility_global_gesture_enabled"; 5094 5095 /** 5096 * Whether Airplane Mode is on. 5097 */ 5098 public static final String AIRPLANE_MODE_ON = "airplane_mode_on"; 5099 5100 /** 5101 * Whether Theater Mode is on. 5102 * {@hide} 5103 */ 5104 public static final String THEATER_MODE_ON = "theater_mode_on"; 5105 5106 /** 5107 * Constant for use in AIRPLANE_MODE_RADIOS to specify Bluetooth radio. 5108 */ 5109 public static final String RADIO_BLUETOOTH = "bluetooth"; 5110 5111 /** 5112 * Constant for use in AIRPLANE_MODE_RADIOS to specify Wi-Fi radio. 5113 */ 5114 public static final String RADIO_WIFI = "wifi"; 5115 5116 /** 5117 * {@hide} 5118 */ 5119 public static final String RADIO_WIMAX = "wimax"; 5120 /** 5121 * Constant for use in AIRPLANE_MODE_RADIOS to specify Cellular radio. 5122 */ 5123 public static final String RADIO_CELL = "cell"; 5124 5125 /** 5126 * Constant for use in AIRPLANE_MODE_RADIOS to specify NFC radio. 5127 */ 5128 public static final String RADIO_NFC = "nfc"; 5129 5130 /** 5131 * A comma separated list of radios that need to be disabled when airplane mode 5132 * is on. This overrides WIFI_ON and BLUETOOTH_ON, if Wi-Fi and bluetooth are 5133 * included in the comma separated list. 5134 */ 5135 public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios"; 5136 5137 /** 5138 * A comma separated list of radios that should to be disabled when airplane mode 5139 * is on, but can be manually reenabled by the user. For example, if RADIO_WIFI is 5140 * added to both AIRPLANE_MODE_RADIOS and AIRPLANE_MODE_TOGGLEABLE_RADIOS, then Wifi 5141 * will be turned off when entering airplane mode, but the user will be able to reenable 5142 * Wifi in the Settings app. 5143 * 5144 * {@hide} 5145 */ 5146 public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios"; 5147 5148 /** 5149 * The policy for deciding when Wi-Fi should go to sleep (which will in 5150 * turn switch to using the mobile data as an Internet connection). 5151 * <p> 5152 * Set to one of {@link #WIFI_SLEEP_POLICY_DEFAULT}, 5153 * {@link #WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED}, or 5154 * {@link #WIFI_SLEEP_POLICY_NEVER}. 5155 */ 5156 public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy"; 5157 5158 /** 5159 * Value for {@link #WIFI_SLEEP_POLICY} to use the default Wi-Fi sleep 5160 * policy, which is to sleep shortly after the turning off 5161 * according to the {@link #STAY_ON_WHILE_PLUGGED_IN} setting. 5162 */ 5163 public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; 5164 5165 /** 5166 * Value for {@link #WIFI_SLEEP_POLICY} to use the default policy when 5167 * the device is on battery, and never go to sleep when the device is 5168 * plugged in. 5169 */ 5170 public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; 5171 5172 /** 5173 * Value for {@link #WIFI_SLEEP_POLICY} to never go to sleep. 5174 */ 5175 public static final int WIFI_SLEEP_POLICY_NEVER = 2; 5176 5177 /** 5178 * Value to specify if the user prefers the date, time and time zone 5179 * to be automatically fetched from the network (NITZ). 1=yes, 0=no 5180 */ 5181 public static final String AUTO_TIME = "auto_time"; 5182 5183 /** 5184 * Value to specify if the user prefers the time zone 5185 * to be automatically fetched from the network (NITZ). 1=yes, 0=no 5186 */ 5187 public static final String AUTO_TIME_ZONE = "auto_time_zone"; 5188 5189 /** 5190 * URI for the car dock "in" event sound. 5191 * @hide 5192 */ 5193 public static final String CAR_DOCK_SOUND = "car_dock_sound"; 5194 5195 /** 5196 * URI for the car dock "out" event sound. 5197 * @hide 5198 */ 5199 public static final String CAR_UNDOCK_SOUND = "car_undock_sound"; 5200 5201 /** 5202 * URI for the desk dock "in" event sound. 5203 * @hide 5204 */ 5205 public static final String DESK_DOCK_SOUND = "desk_dock_sound"; 5206 5207 /** 5208 * URI for the desk dock "out" event sound. 5209 * @hide 5210 */ 5211 public static final String DESK_UNDOCK_SOUND = "desk_undock_sound"; 5212 5213 /** 5214 * Whether to play a sound for dock events. 5215 * @hide 5216 */ 5217 public static final String DOCK_SOUNDS_ENABLED = "dock_sounds_enabled"; 5218 5219 /** 5220 * URI for the "device locked" (keyguard shown) sound. 5221 * @hide 5222 */ 5223 public static final String LOCK_SOUND = "lock_sound"; 5224 5225 /** 5226 * URI for the "device unlocked" sound. 5227 * @hide 5228 */ 5229 public static final String UNLOCK_SOUND = "unlock_sound"; 5230 5231 /** 5232 * URI for the "device is trusted" sound, which is played when the device enters the trusted 5233 * state without unlocking. 5234 * @hide 5235 */ 5236 public static final String TRUSTED_SOUND = "trusted_sound"; 5237 5238 /** 5239 * URI for the low battery sound file. 5240 * @hide 5241 */ 5242 public static final String LOW_BATTERY_SOUND = "low_battery_sound"; 5243 5244 /** 5245 * Whether to play a sound for low-battery alerts. 5246 * @hide 5247 */ 5248 public static final String POWER_SOUNDS_ENABLED = "power_sounds_enabled"; 5249 5250 /** 5251 * URI for the "wireless charging started" sound. 5252 * @hide 5253 */ 5254 public static final String WIRELESS_CHARGING_STARTED_SOUND = 5255 "wireless_charging_started_sound"; 5256 5257 /** 5258 * Whether we keep the device on while the device is plugged in. 5259 * Supported values are: 5260 * <ul> 5261 * <li>{@code 0} to never stay on while plugged in</li> 5262 * <li>{@link BatteryManager#BATTERY_PLUGGED_AC} to stay on for AC charger</li> 5263 * <li>{@link BatteryManager#BATTERY_PLUGGED_USB} to stay on for USB charger</li> 5264 * <li>{@link BatteryManager#BATTERY_PLUGGED_WIRELESS} to stay on for wireless charger</li> 5265 * </ul> 5266 * These values can be OR-ed together. 5267 */ 5268 public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in"; 5269 5270 /** 5271 * When the user has enable the option to have a "bug report" command 5272 * in the power menu. 5273 * @hide 5274 */ 5275 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu"; 5276 5277 /** 5278 * Whether ADB is enabled. 5279 */ 5280 public static final String ADB_ENABLED = "adb_enabled"; 5281 5282 /** 5283 * Whether Views are allowed to save their attribute data. 5284 * @hide 5285 */ 5286 public static final String DEBUG_VIEW_ATTRIBUTES = "debug_view_attributes"; 5287 5288 /** 5289 * Whether assisted GPS should be enabled or not. 5290 * @hide 5291 */ 5292 public static final String ASSISTED_GPS_ENABLED = "assisted_gps_enabled"; 5293 5294 /** 5295 * Whether bluetooth is enabled/disabled 5296 * 0=disabled. 1=enabled. 5297 */ 5298 public static final String BLUETOOTH_ON = "bluetooth_on"; 5299 5300 /** 5301 * CDMA Cell Broadcast SMS 5302 * 0 = CDMA Cell Broadcast SMS disabled 5303 * 1 = CDMA Cell Broadcast SMS enabled 5304 * @hide 5305 */ 5306 public static final String CDMA_CELL_BROADCAST_SMS = 5307 "cdma_cell_broadcast_sms"; 5308 5309 /** 5310 * The CDMA roaming mode 0 = Home Networks, CDMA default 5311 * 1 = Roaming on Affiliated networks 5312 * 2 = Roaming on any networks 5313 * @hide 5314 */ 5315 public static final String CDMA_ROAMING_MODE = "roaming_settings"; 5316 5317 /** 5318 * The CDMA subscription mode 0 = RUIM/SIM (default) 5319 * 1 = NV 5320 * @hide 5321 */ 5322 public static final String CDMA_SUBSCRIPTION_MODE = "subscription_mode"; 5323 5324 /** Inactivity timeout to track mobile data activity. 5325 * 5326 * If set to a positive integer, it indicates the inactivity timeout value in seconds to 5327 * infer the data activity of mobile network. After a period of no activity on mobile 5328 * networks with length specified by the timeout, an {@code ACTION_DATA_ACTIVITY_CHANGE} 5329 * intent is fired to indicate a transition of network status from "active" to "idle". Any 5330 * subsequent activity on mobile networks triggers the firing of {@code 5331 * ACTION_DATA_ACTIVITY_CHANGE} intent indicating transition from "idle" to "active". 5332 * 5333 * Network activity refers to transmitting or receiving data on the network interfaces. 5334 * 5335 * Tracking is disabled if set to zero or negative value. 5336 * 5337 * @hide 5338 */ 5339 public static final String DATA_ACTIVITY_TIMEOUT_MOBILE = "data_activity_timeout_mobile"; 5340 5341 /** Timeout to tracking Wifi data activity. Same as {@code DATA_ACTIVITY_TIMEOUT_MOBILE} 5342 * but for Wifi network. 5343 * @hide 5344 */ 5345 public static final String DATA_ACTIVITY_TIMEOUT_WIFI = "data_activity_timeout_wifi"; 5346 5347 /** 5348 * Whether or not data roaming is enabled. (0 = false, 1 = true) 5349 */ 5350 public static final String DATA_ROAMING = "data_roaming"; 5351 5352 /** 5353 * The value passed to a Mobile DataConnection via bringUp which defines the 5354 * number of retries to preform when setting up the initial connection. The default 5355 * value defined in DataConnectionTrackerBase#DEFAULT_MDC_INITIAL_RETRY is currently 1. 5356 * @hide 5357 */ 5358 public static final String MDC_INITIAL_MAX_RETRY = "mdc_initial_max_retry"; 5359 5360 /** 5361 * Whether user has enabled development settings. 5362 */ 5363 public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled"; 5364 5365 /** 5366 * Whether the device has been provisioned (0 = false, 1 = true) 5367 */ 5368 public static final String DEVICE_PROVISIONED = "device_provisioned"; 5369 5370 /** 5371 * The saved value for WindowManagerService.setForcedDisplayDensity(). 5372 * One integer in dpi. If unset, then use the real display density. 5373 * @hide 5374 */ 5375 public static final String DISPLAY_DENSITY_FORCED = "display_density_forced"; 5376 5377 /** 5378 * The saved value for WindowManagerService.setForcedDisplaySize(). 5379 * Two integers separated by a comma. If unset, then use the real display size. 5380 * @hide 5381 */ 5382 public static final String DISPLAY_SIZE_FORCED = "display_size_forced"; 5383 5384 /** 5385 * The maximum size, in bytes, of a download that the download manager will transfer over 5386 * a non-wifi connection. 5387 * @hide 5388 */ 5389 public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE = 5390 "download_manager_max_bytes_over_mobile"; 5391 5392 /** 5393 * The recommended maximum size, in bytes, of a download that the download manager should 5394 * transfer over a non-wifi connection. Over this size, the use will be warned, but will 5395 * have the option to start the download over the mobile connection anyway. 5396 * @hide 5397 */ 5398 public static final String DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE = 5399 "download_manager_recommended_max_bytes_over_mobile"; 5400 5401 /** 5402 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead 5403 */ 5404 @Deprecated 5405 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS; 5406 5407 /** 5408 * Whether HDMI control shall be enabled. If disabled, no CEC/MHL command will be 5409 * sent or processed. (0 = false, 1 = true) 5410 * @hide 5411 */ 5412 public static final String HDMI_CONTROL_ENABLED = "hdmi_control_enabled"; 5413 5414 /** 5415 * Whether HDMI system audio is enabled. If enabled, TV internal speaker is muted, 5416 * and the output is redirected to AV Receiver connected via 5417 * {@Global#HDMI_SYSTEM_AUDIO_OUTPUT}. 5418 * @hide 5419 */ 5420 public static final String HDMI_SYSTEM_AUDIO_ENABLED = "hdmi_system_audio_enabled"; 5421 5422 /** 5423 * Whether TV will automatically turn on upon reception of the CEC command 5424 * <Text View On> or <Image View On>. (0 = false, 1 = true) 5425 * @hide 5426 */ 5427 public static final String HDMI_CONTROL_AUTO_WAKEUP_ENABLED = 5428 "hdmi_control_auto_wakeup_enabled"; 5429 5430 /** 5431 * Whether TV will also turn off other CEC devices when it goes to standby mode. 5432 * (0 = false, 1 = true) 5433 * @hide 5434 */ 5435 public static final String HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED = 5436 "hdmi_control_auto_device_off_enabled"; 5437 5438 /** 5439 * Whether TV will switch to MHL port when a mobile device is plugged in. 5440 * (0 = false, 1 = true) 5441 * @hide 5442 */ 5443 public static final String MHL_INPUT_SWITCHING_ENABLED = "mhl_input_switching_enabled"; 5444 5445 /** 5446 * Whether TV will charge the mobile device connected at MHL port. (0 = false, 1 = true) 5447 * @hide 5448 */ 5449 public static final String MHL_POWER_CHARGE_ENABLED = "mhl_power_charge_enabled"; 5450 5451 /** 5452 * Whether mobile data connections are allowed by the user. See 5453 * ConnectivityManager for more info. 5454 * @hide 5455 */ 5456 public static final String MOBILE_DATA = "mobile_data"; 5457 5458 /** {@hide} */ 5459 public static final String NETSTATS_ENABLED = "netstats_enabled"; 5460 /** {@hide} */ 5461 public static final String NETSTATS_POLL_INTERVAL = "netstats_poll_interval"; 5462 /** {@hide} */ 5463 public static final String NETSTATS_TIME_CACHE_MAX_AGE = "netstats_time_cache_max_age"; 5464 /** {@hide} */ 5465 public static final String NETSTATS_GLOBAL_ALERT_BYTES = "netstats_global_alert_bytes"; 5466 /** {@hide} */ 5467 public static final String NETSTATS_SAMPLE_ENABLED = "netstats_sample_enabled"; 5468 5469 /** {@hide} */ 5470 public static final String NETSTATS_DEV_BUCKET_DURATION = "netstats_dev_bucket_duration"; 5471 /** {@hide} */ 5472 public static final String NETSTATS_DEV_PERSIST_BYTES = "netstats_dev_persist_bytes"; 5473 /** {@hide} */ 5474 public static final String NETSTATS_DEV_ROTATE_AGE = "netstats_dev_rotate_age"; 5475 /** {@hide} */ 5476 public static final String NETSTATS_DEV_DELETE_AGE = "netstats_dev_delete_age"; 5477 5478 /** {@hide} */ 5479 public static final String NETSTATS_UID_BUCKET_DURATION = "netstats_uid_bucket_duration"; 5480 /** {@hide} */ 5481 public static final String NETSTATS_UID_PERSIST_BYTES = "netstats_uid_persist_bytes"; 5482 /** {@hide} */ 5483 public static final String NETSTATS_UID_ROTATE_AGE = "netstats_uid_rotate_age"; 5484 /** {@hide} */ 5485 public static final String NETSTATS_UID_DELETE_AGE = "netstats_uid_delete_age"; 5486 5487 /** {@hide} */ 5488 public static final String NETSTATS_UID_TAG_BUCKET_DURATION = "netstats_uid_tag_bucket_duration"; 5489 /** {@hide} */ 5490 public static final String NETSTATS_UID_TAG_PERSIST_BYTES = "netstats_uid_tag_persist_bytes"; 5491 /** {@hide} */ 5492 public static final String NETSTATS_UID_TAG_ROTATE_AGE = "netstats_uid_tag_rotate_age"; 5493 /** {@hide} */ 5494 public static final String NETSTATS_UID_TAG_DELETE_AGE = "netstats_uid_tag_delete_age"; 5495 5496 /** 5497 * User preference for which network(s) should be used. Only the 5498 * connectivity service should touch this. 5499 */ 5500 public static final String NETWORK_PREFERENCE = "network_preference"; 5501 5502 /** 5503 * Which package name to use for network scoring. If null, or if the package is not a valid 5504 * scorer app, external network scores will neither be requested nor accepted. 5505 * @hide 5506 */ 5507 public static final String NETWORK_SCORER_APP = "network_scorer_app"; 5508 5509 /** 5510 * If the NITZ_UPDATE_DIFF time is exceeded then an automatic adjustment 5511 * to SystemClock will be allowed even if NITZ_UPDATE_SPACING has not been 5512 * exceeded. 5513 * @hide 5514 */ 5515 public static final String NITZ_UPDATE_DIFF = "nitz_update_diff"; 5516 5517 /** 5518 * The length of time in milli-seconds that automatic small adjustments to 5519 * SystemClock are ignored if NITZ_UPDATE_DIFF is not exceeded. 5520 * @hide 5521 */ 5522 public static final String NITZ_UPDATE_SPACING = "nitz_update_spacing"; 5523 5524 /** Preferred NTP server. {@hide} */ 5525 public static final String NTP_SERVER = "ntp_server"; 5526 /** Timeout in milliseconds to wait for NTP server. {@hide} */ 5527 public static final String NTP_TIMEOUT = "ntp_timeout"; 5528 5529 /** 5530 * Whether the package manager should send package verification broadcasts for verifiers to 5531 * review apps prior to installation. 5532 * 1 = request apps to be verified prior to installation, if a verifier exists. 5533 * 0 = do not verify apps before installation 5534 * @hide 5535 */ 5536 public static final String PACKAGE_VERIFIER_ENABLE = "package_verifier_enable"; 5537 5538 /** Timeout for package verification. 5539 * @hide */ 5540 public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout"; 5541 5542 /** Default response code for package verification. 5543 * @hide */ 5544 public static final String PACKAGE_VERIFIER_DEFAULT_RESPONSE = "verifier_default_response"; 5545 5546 /** 5547 * Show package verification setting in the Settings app. 5548 * 1 = show (default) 5549 * 0 = hide 5550 * @hide 5551 */ 5552 public static final String PACKAGE_VERIFIER_SETTING_VISIBLE = "verifier_setting_visible"; 5553 5554 /** 5555 * Run package verificaiton on apps installed through ADB/ADT/USB 5556 * 1 = perform package verification on ADB installs (default) 5557 * 0 = bypass package verification on ADB installs 5558 * @hide 5559 */ 5560 public static final String PACKAGE_VERIFIER_INCLUDE_ADB = "verifier_verify_adb_installs"; 5561 5562 /** 5563 * Time since last fstrim (milliseconds) after which we force one to happen 5564 * during device startup. If unset, the default is 3 days. 5565 * @hide 5566 */ 5567 public static final String FSTRIM_MANDATORY_INTERVAL = "fstrim_mandatory_interval"; 5568 5569 /** 5570 * The interval in milliseconds at which to check packet counts on the 5571 * mobile data interface when screen is on, to detect possible data 5572 * connection problems. 5573 * @hide 5574 */ 5575 public static final String PDP_WATCHDOG_POLL_INTERVAL_MS = 5576 "pdp_watchdog_poll_interval_ms"; 5577 5578 /** 5579 * The interval in milliseconds at which to check packet counts on the 5580 * mobile data interface when screen is off, to detect possible data 5581 * connection problems. 5582 * @hide 5583 */ 5584 public static final String PDP_WATCHDOG_LONG_POLL_INTERVAL_MS = 5585 "pdp_watchdog_long_poll_interval_ms"; 5586 5587 /** 5588 * The interval in milliseconds at which to check packet counts on the 5589 * mobile data interface after {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} 5590 * outgoing packets has been reached without incoming packets. 5591 * @hide 5592 */ 5593 public static final String PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS = 5594 "pdp_watchdog_error_poll_interval_ms"; 5595 5596 /** 5597 * The number of outgoing packets sent without seeing an incoming packet 5598 * that triggers a countdown (of {@link #PDP_WATCHDOG_ERROR_POLL_COUNT} 5599 * device is logged to the event log 5600 * @hide 5601 */ 5602 public static final String PDP_WATCHDOG_TRIGGER_PACKET_COUNT = 5603 "pdp_watchdog_trigger_packet_count"; 5604 5605 /** 5606 * The number of polls to perform (at {@link #PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS}) 5607 * after hitting {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} before 5608 * attempting data connection recovery. 5609 * @hide 5610 */ 5611 public static final String PDP_WATCHDOG_ERROR_POLL_COUNT = 5612 "pdp_watchdog_error_poll_count"; 5613 5614 /** 5615 * The number of failed PDP reset attempts before moving to something more 5616 * drastic: re-registering to the network. 5617 * @hide 5618 */ 5619 public static final String PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT = 5620 "pdp_watchdog_max_pdp_reset_fail_count"; 5621 5622 /** 5623 * A positive value indicates how often the SamplingProfiler 5624 * should take snapshots. Zero value means SamplingProfiler 5625 * is disabled. 5626 * 5627 * @hide 5628 */ 5629 public static final String SAMPLING_PROFILER_MS = "sampling_profiler_ms"; 5630 5631 /** 5632 * URL to open browser on to allow user to manage a prepay account 5633 * @hide 5634 */ 5635 public static final String SETUP_PREPAID_DATA_SERVICE_URL = 5636 "setup_prepaid_data_service_url"; 5637 5638 /** 5639 * URL to attempt a GET on to see if this is a prepay device 5640 * @hide 5641 */ 5642 public static final String SETUP_PREPAID_DETECTION_TARGET_URL = 5643 "setup_prepaid_detection_target_url"; 5644 5645 /** 5646 * Host to check for a redirect to after an attempt to GET 5647 * SETUP_PREPAID_DETECTION_TARGET_URL. (If we redirected there, 5648 * this is a prepaid device with zero balance.) 5649 * @hide 5650 */ 5651 public static final String SETUP_PREPAID_DETECTION_REDIR_HOST = 5652 "setup_prepaid_detection_redir_host"; 5653 5654 /** 5655 * The interval in milliseconds at which to check the number of SMS sent out without asking 5656 * for use permit, to limit the un-authorized SMS usage. 5657 * 5658 * @hide 5659 */ 5660 public static final String SMS_OUTGOING_CHECK_INTERVAL_MS = 5661 "sms_outgoing_check_interval_ms"; 5662 5663 /** 5664 * The number of outgoing SMS sent without asking for user permit (of {@link 5665 * #SMS_OUTGOING_CHECK_INTERVAL_MS} 5666 * 5667 * @hide 5668 */ 5669 public static final String SMS_OUTGOING_CHECK_MAX_COUNT = 5670 "sms_outgoing_check_max_count"; 5671 5672 /** 5673 * Used to disable SMS short code confirmation - defaults to true. 5674 * True indcates we will do the check, etc. Set to false to disable. 5675 * @see com.android.internal.telephony.SmsUsageMonitor 5676 * @hide 5677 */ 5678 public static final String SMS_SHORT_CODE_CONFIRMATION = "sms_short_code_confirmation"; 5679 5680 /** 5681 * Used to select which country we use to determine premium sms codes. 5682 * One of com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_SIM, 5683 * com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_NETWORK, 5684 * or com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_BOTH. 5685 * @hide 5686 */ 5687 public static final String SMS_SHORT_CODE_RULE = "sms_short_code_rule"; 5688 5689 /** 5690 * Used to select TCP's default initial receiver window size in segments - defaults to a build config value 5691 * @hide 5692 */ 5693 public static final String TCP_DEFAULT_INIT_RWND = "tcp_default_init_rwnd"; 5694 5695 /** 5696 * Used to disable Tethering on a device - defaults to true 5697 * @hide 5698 */ 5699 public static final String TETHER_SUPPORTED = "tether_supported"; 5700 5701 /** 5702 * Used to require DUN APN on the device or not - defaults to a build config value 5703 * which defaults to false 5704 * @hide 5705 */ 5706 public static final String TETHER_DUN_REQUIRED = "tether_dun_required"; 5707 5708 /** 5709 * Used to hold a gservices-provisioned apn value for DUN. If set, or the 5710 * corresponding build config values are set it will override the APN DB 5711 * values. 5712 * Consists of a comma seperated list of strings: 5713 * "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" 5714 * note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" 5715 * @hide 5716 */ 5717 public static final String TETHER_DUN_APN = "tether_dun_apn"; 5718 5719 /** 5720 * USB Mass Storage Enabled 5721 */ 5722 public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled"; 5723 5724 /** 5725 * If this setting is set (to anything), then all references 5726 * to Gmail on the device must change to Google Mail. 5727 */ 5728 public static final String USE_GOOGLE_MAIL = "use_google_mail"; 5729 5730 /** 5731 * Webview Data reduction proxy key. 5732 * @hide 5733 */ 5734 public static final String WEBVIEW_DATA_REDUCTION_PROXY_KEY = 5735 "webview_data_reduction_proxy_key"; 5736 5737 /** 5738 * Whether Wifi display is enabled/disabled 5739 * 0=disabled. 1=enabled. 5740 * @hide 5741 */ 5742 public static final String WIFI_DISPLAY_ON = "wifi_display_on"; 5743 5744 /** 5745 * Whether Wifi display certification mode is enabled/disabled 5746 * 0=disabled. 1=enabled. 5747 * @hide 5748 */ 5749 public static final String WIFI_DISPLAY_CERTIFICATION_ON = 5750 "wifi_display_certification_on"; 5751 5752 /** 5753 * WPS Configuration method used by Wifi display, this setting only 5754 * takes effect when WIFI_DISPLAY_CERTIFICATION_ON is 1 (enabled). 5755 * 5756 * Possible values are: 5757 * 5758 * WpsInfo.INVALID: use default WPS method chosen by framework 5759 * WpsInfo.PBC : use Push button 5760 * WpsInfo.KEYPAD : use Keypad 5761 * WpsInfo.DISPLAY: use Display 5762 * @hide 5763 */ 5764 public static final String WIFI_DISPLAY_WPS_CONFIG = 5765 "wifi_display_wps_config"; 5766 5767 /** 5768 * Whether to notify the user of open networks. 5769 * <p> 5770 * If not connected and the scan results have an open network, we will 5771 * put this notification up. If we attempt to connect to a network or 5772 * the open network(s) disappear, we remove the notification. When we 5773 * show the notification, we will not show it again for 5774 * {@link android.provider.Settings.Secure#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} time. 5775 */ 5776 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = 5777 "wifi_networks_available_notification_on"; 5778 /** 5779 * {@hide} 5780 */ 5781 public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON = 5782 "wimax_networks_available_notification_on"; 5783 5784 /** 5785 * Delay (in seconds) before repeating the Wi-Fi networks available notification. 5786 * Connecting to a network will reset the timer. 5787 */ 5788 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = 5789 "wifi_networks_available_repeat_delay"; 5790 5791 /** 5792 * 802.11 country code in ISO 3166 format 5793 * @hide 5794 */ 5795 public static final String WIFI_COUNTRY_CODE = "wifi_country_code"; 5796 5797 /** 5798 * The interval in milliseconds to issue wake up scans when wifi needs 5799 * to connect. This is necessary to connect to an access point when 5800 * device is on the move and the screen is off. 5801 * @hide 5802 */ 5803 public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS = 5804 "wifi_framework_scan_interval_ms"; 5805 5806 /** 5807 * The interval in milliseconds after which Wi-Fi is considered idle. 5808 * When idle, it is possible for the device to be switched from Wi-Fi to 5809 * the mobile data network. 5810 * @hide 5811 */ 5812 public static final String WIFI_IDLE_MS = "wifi_idle_ms"; 5813 5814 /** 5815 * When the number of open networks exceeds this number, the 5816 * least-recently-used excess networks will be removed. 5817 */ 5818 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept"; 5819 5820 /** 5821 * Whether the Wi-Fi should be on. Only the Wi-Fi service should touch this. 5822 */ 5823 public static final String WIFI_ON = "wifi_on"; 5824 5825 /** 5826 * Setting to allow scans to be enabled even wifi is turned off for connectivity. 5827 * @hide 5828 */ 5829 public static final String WIFI_SCAN_ALWAYS_AVAILABLE = 5830 "wifi_scan_always_enabled"; 5831 5832 /** 5833 * Used to save the Wifi_ON state prior to tethering. 5834 * This state will be checked to restore Wifi after 5835 * the user turns off tethering. 5836 * 5837 * @hide 5838 */ 5839 public static final String WIFI_SAVED_STATE = "wifi_saved_state"; 5840 5841 /** 5842 * The interval in milliseconds to scan as used by the wifi supplicant 5843 * @hide 5844 */ 5845 public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_MS = 5846 "wifi_supplicant_scan_interval_ms"; 5847 5848 /** 5849 * whether frameworks handles wifi auto-join 5850 * @hide 5851 */ 5852 public static final String WIFI_ENHANCED_AUTO_JOIN = 5853 "wifi_enhanced_auto_join"; 5854 5855 /** 5856 * whether settings show RSSI 5857 * @hide 5858 */ 5859 public static final String WIFI_NETWORK_SHOW_RSSI = 5860 "wifi_network_show_rssi"; 5861 5862 /** 5863 * The interval in milliseconds to scan at supplicant when p2p is connected 5864 * @hide 5865 */ 5866 public static final String WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS = 5867 "wifi_scan_interval_p2p_connected_ms"; 5868 5869 /** 5870 * Whether the Wi-Fi watchdog is enabled. 5871 */ 5872 public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on"; 5873 5874 /** 5875 * Setting to turn off poor network avoidance on Wi-Fi. Feature is enabled by default and 5876 * the setting needs to be set to 0 to disable it. 5877 * @hide 5878 */ 5879 public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED = 5880 "wifi_watchdog_poor_network_test_enabled"; 5881 5882 /** 5883 * Setting to turn on suspend optimizations at screen off on Wi-Fi. Enabled by default and 5884 * needs to be set to 0 to disable it. 5885 * @hide 5886 */ 5887 public static final String WIFI_SUSPEND_OPTIMIZATIONS_ENABLED = 5888 "wifi_suspend_optimizations_enabled"; 5889 5890 /** 5891 * The maximum number of times we will retry a connection to an access 5892 * point for which we have failed in acquiring an IP address from DHCP. 5893 * A value of N means that we will make N+1 connection attempts in all. 5894 */ 5895 public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count"; 5896 5897 /** 5898 * Maximum amount of time in milliseconds to hold a wakelock while waiting for mobile 5899 * data connectivity to be established after a disconnect from Wi-Fi. 5900 */ 5901 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = 5902 "wifi_mobile_data_transition_wakelock_timeout_ms"; 5903 5904 /** 5905 * The operational wifi frequency band 5906 * Set to one of {@link WifiManager#WIFI_FREQUENCY_BAND_AUTO}, 5907 * {@link WifiManager#WIFI_FREQUENCY_BAND_5GHZ} or 5908 * {@link WifiManager#WIFI_FREQUENCY_BAND_2GHZ} 5909 * 5910 * @hide 5911 */ 5912 public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band"; 5913 5914 /** 5915 * The Wi-Fi peer-to-peer device name 5916 * @hide 5917 */ 5918 public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name"; 5919 5920 /** 5921 * The min time between wifi disable and wifi enable 5922 * @hide 5923 */ 5924 public static final String WIFI_REENABLE_DELAY_MS = "wifi_reenable_delay"; 5925 5926 /** 5927 * Timeout for ephemeral networks when all known BSSIDs go out of range. We will disconnect 5928 * from an ephemeral network if there is no BSSID for that network with a non-null score that 5929 * has been seen in this time period. 5930 * 5931 * If this is less than or equal to zero, we use a more conservative behavior and only check 5932 * for a non-null score from the currently connected or target BSSID. 5933 * @hide 5934 */ 5935 public static final String WIFI_EPHEMERAL_OUT_OF_RANGE_TIMEOUT_MS = 5936 "wifi_ephemeral_out_of_range_timeout_ms"; 5937 5938 /** 5939 * The number of milliseconds to delay when checking for data stalls during 5940 * non-aggressive detection. (screen is turned off.) 5941 * @hide 5942 */ 5943 public static final String DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS = 5944 "data_stall_alarm_non_aggressive_delay_in_ms"; 5945 5946 /** 5947 * The number of milliseconds to delay when checking for data stalls during 5948 * aggressive detection. (screen on or suspected data stall) 5949 * @hide 5950 */ 5951 public static final String DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS = 5952 "data_stall_alarm_aggressive_delay_in_ms"; 5953 5954 /** 5955 * The number of milliseconds to allow the provisioning apn to remain active 5956 * @hide 5957 */ 5958 public static final String PROVISIONING_APN_ALARM_DELAY_IN_MS = 5959 "provisioning_apn_alarm_delay_in_ms"; 5960 5961 /** 5962 * The interval in milliseconds at which to check gprs registration 5963 * after the first registration mismatch of gprs and voice service, 5964 * to detect possible data network registration problems. 5965 * 5966 * @hide 5967 */ 5968 public static final String GPRS_REGISTER_CHECK_PERIOD_MS = 5969 "gprs_register_check_period_ms"; 5970 5971 /** 5972 * Nonzero causes Log.wtf() to crash. 5973 * @hide 5974 */ 5975 public static final String WTF_IS_FATAL = "wtf_is_fatal"; 5976 5977 /** 5978 * Ringer mode. This is used internally, changing this value will not 5979 * change the ringer mode. See AudioManager. 5980 */ 5981 public static final String MODE_RINGER = "mode_ringer"; 5982 5983 /** 5984 * Overlay display devices setting. 5985 * The associated value is a specially formatted string that describes the 5986 * size and density of simulated secondary display devices. 5987 * <p> 5988 * Format: {width}x{height}/{dpi};... 5989 * </p><p> 5990 * Example: 5991 * <ul> 5992 * <li><code>1280x720/213</code>: make one overlay that is 1280x720 at 213dpi.</li> 5993 * <li><code>1920x1080/320;1280x720/213</code>: make two overlays, the first 5994 * at 1080p and the second at 720p.</li> 5995 * <li>If the value is empty, then no overlay display devices are created.</li> 5996 * </ul></p> 5997 * 5998 * @hide 5999 */ 6000 public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices"; 6001 6002 /** 6003 * Threshold values for the duration and level of a discharge cycle, 6004 * under which we log discharge cycle info. 6005 * 6006 * @hide 6007 */ 6008 public static final String 6009 BATTERY_DISCHARGE_DURATION_THRESHOLD = "battery_discharge_duration_threshold"; 6010 6011 /** @hide */ 6012 public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold"; 6013 6014 /** 6015 * Flag for allowing ActivityManagerService to send ACTION_APP_ERROR 6016 * intents on application crashes and ANRs. If this is disabled, the 6017 * crash/ANR dialog will never display the "Report" button. 6018 * <p> 6019 * Type: int (0 = disallow, 1 = allow) 6020 * 6021 * @hide 6022 */ 6023 public static final String SEND_ACTION_APP_ERROR = "send_action_app_error"; 6024 6025 /** 6026 * Maximum age of entries kept by {@link DropBoxManager}. 6027 * 6028 * @hide 6029 */ 6030 public static final String DROPBOX_AGE_SECONDS = "dropbox_age_seconds"; 6031 6032 /** 6033 * Maximum number of entry files which {@link DropBoxManager} will keep 6034 * around. 6035 * 6036 * @hide 6037 */ 6038 public static final String DROPBOX_MAX_FILES = "dropbox_max_files"; 6039 6040 /** 6041 * Maximum amount of disk space used by {@link DropBoxManager} no matter 6042 * what. 6043 * 6044 * @hide 6045 */ 6046 public static final String DROPBOX_QUOTA_KB = "dropbox_quota_kb"; 6047 6048 /** 6049 * Percent of free disk (excluding reserve) which {@link DropBoxManager} 6050 * will use. 6051 * 6052 * @hide 6053 */ 6054 public static final String DROPBOX_QUOTA_PERCENT = "dropbox_quota_percent"; 6055 6056 /** 6057 * Percent of total disk which {@link DropBoxManager} will never dip 6058 * into. 6059 * 6060 * @hide 6061 */ 6062 public static final String DROPBOX_RESERVE_PERCENT = "dropbox_reserve_percent"; 6063 6064 /** 6065 * Prefix for per-tag dropbox disable/enable settings. 6066 * 6067 * @hide 6068 */ 6069 public static final String DROPBOX_TAG_PREFIX = "dropbox:"; 6070 6071 /** 6072 * Lines of logcat to include with system crash/ANR/etc. reports, as a 6073 * prefix of the dropbox tag of the report type. For example, 6074 * "logcat_for_system_server_anr" controls the lines of logcat captured 6075 * with system server ANR reports. 0 to disable. 6076 * 6077 * @hide 6078 */ 6079 public static final String ERROR_LOGCAT_PREFIX = "logcat_for_"; 6080 6081 /** 6082 * The interval in minutes after which the amount of free storage left 6083 * on the device is logged to the event log 6084 * 6085 * @hide 6086 */ 6087 public static final String SYS_FREE_STORAGE_LOG_INTERVAL = "sys_free_storage_log_interval"; 6088 6089 /** 6090 * Threshold for the amount of change in disk free space required to 6091 * report the amount of free space. Used to prevent spamming the logs 6092 * when the disk free space isn't changing frequently. 6093 * 6094 * @hide 6095 */ 6096 public static final String 6097 DISK_FREE_CHANGE_REPORTING_THRESHOLD = "disk_free_change_reporting_threshold"; 6098 6099 /** 6100 * Minimum percentage of free storage on the device that is used to 6101 * determine if the device is running low on storage. The default is 10. 6102 * <p> 6103 * Say this value is set to 10, the device is considered running low on 6104 * storage if 90% or more of the device storage is filled up. 6105 * 6106 * @hide 6107 */ 6108 public static final String 6109 SYS_STORAGE_THRESHOLD_PERCENTAGE = "sys_storage_threshold_percentage"; 6110 6111 /** 6112 * Maximum byte size of the low storage threshold. This is to ensure 6113 * that {@link #SYS_STORAGE_THRESHOLD_PERCENTAGE} does not result in an 6114 * overly large threshold for large storage devices. Currently this must 6115 * be less than 2GB. This default is 500MB. 6116 * 6117 * @hide 6118 */ 6119 public static final String 6120 SYS_STORAGE_THRESHOLD_MAX_BYTES = "sys_storage_threshold_max_bytes"; 6121 6122 /** 6123 * Minimum bytes of free storage on the device before the data partition 6124 * is considered full. By default, 1 MB is reserved to avoid system-wide 6125 * SQLite disk full exceptions. 6126 * 6127 * @hide 6128 */ 6129 public static final String 6130 SYS_STORAGE_FULL_THRESHOLD_BYTES = "sys_storage_full_threshold_bytes"; 6131 6132 /** 6133 * The maximum reconnect delay for short network outages or when the 6134 * network is suspended due to phone use. 6135 * 6136 * @hide 6137 */ 6138 public static final String 6139 SYNC_MAX_RETRY_DELAY_IN_SECONDS = "sync_max_retry_delay_in_seconds"; 6140 6141 /** 6142 * The number of milliseconds to delay before sending out 6143 * {@link ConnectivityManager#CONNECTIVITY_ACTION} broadcasts. Ignored. 6144 * 6145 * @hide 6146 */ 6147 public static final String CONNECTIVITY_CHANGE_DELAY = "connectivity_change_delay"; 6148 6149 6150 /** 6151 * Network sampling interval, in seconds. We'll generate link information 6152 * about bytes/packets sent and error rates based on data sampled in this interval 6153 * 6154 * @hide 6155 */ 6156 6157 public static final String CONNECTIVITY_SAMPLING_INTERVAL_IN_SECONDS = 6158 "connectivity_sampling_interval_in_seconds"; 6159 6160 /** 6161 * The series of successively longer delays used in retrying to download PAC file. 6162 * Last delay is used between successful PAC downloads. 6163 * 6164 * @hide 6165 */ 6166 public static final String PAC_CHANGE_DELAY = "pac_change_delay"; 6167 6168 /** 6169 * Setting to turn off captive portal detection. Feature is enabled by 6170 * default and the setting needs to be set to 0 to disable it. 6171 * 6172 * @hide 6173 */ 6174 public static final String 6175 CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled"; 6176 6177 /** 6178 * The server used for captive portal detection upon a new conection. A 6179 * 204 response code from the server is used for validation. 6180 * 6181 * @hide 6182 */ 6183 public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server"; 6184 6185 /** 6186 * Whether network service discovery is enabled. 6187 * 6188 * @hide 6189 */ 6190 public static final String NSD_ON = "nsd_on"; 6191 6192 /** 6193 * Let user pick default install location. 6194 * 6195 * @hide 6196 */ 6197 public static final String SET_INSTALL_LOCATION = "set_install_location"; 6198 6199 /** 6200 * Default install location value. 6201 * 0 = auto, let system decide 6202 * 1 = internal 6203 * 2 = sdcard 6204 * @hide 6205 */ 6206 public static final String DEFAULT_INSTALL_LOCATION = "default_install_location"; 6207 6208 /** 6209 * ms during which to consume extra events related to Inet connection 6210 * condition after a transtion to fully-connected 6211 * 6212 * @hide 6213 */ 6214 public static final String 6215 INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay"; 6216 6217 /** 6218 * ms during which to consume extra events related to Inet connection 6219 * condtion after a transtion to partly-connected 6220 * 6221 * @hide 6222 */ 6223 public static final String 6224 INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay"; 6225 6226 /** {@hide} */ 6227 public static final String 6228 READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT = "read_external_storage_enforced_default"; 6229 6230 /** 6231 * Host name and port for global http proxy. Uses ':' seperator for 6232 * between host and port. 6233 */ 6234 public static final String HTTP_PROXY = "http_proxy"; 6235 6236 /** 6237 * Host name for global http proxy. Set via ConnectivityManager. 6238 * 6239 * @hide 6240 */ 6241 public static final String GLOBAL_HTTP_PROXY_HOST = "global_http_proxy_host"; 6242 6243 /** 6244 * Integer host port for global http proxy. Set via ConnectivityManager. 6245 * 6246 * @hide 6247 */ 6248 public static final String GLOBAL_HTTP_PROXY_PORT = "global_http_proxy_port"; 6249 6250 /** 6251 * Exclusion list for global proxy. This string contains a list of 6252 * comma-separated domains where the global proxy does not apply. 6253 * Domains should be listed in a comma- separated list. Example of 6254 * acceptable formats: ".domain1.com,my.domain2.com" Use 6255 * ConnectivityManager to set/get. 6256 * 6257 * @hide 6258 */ 6259 public static final String 6260 GLOBAL_HTTP_PROXY_EXCLUSION_LIST = "global_http_proxy_exclusion_list"; 6261 6262 /** 6263 * The location PAC File for the proxy. 6264 * @hide 6265 */ 6266 public static final String 6267 GLOBAL_HTTP_PROXY_PAC = "global_proxy_pac_url"; 6268 6269 /** 6270 * Enables the UI setting to allow the user to specify the global HTTP 6271 * proxy and associated exclusion list. 6272 * 6273 * @hide 6274 */ 6275 public static final String SET_GLOBAL_HTTP_PROXY = "set_global_http_proxy"; 6276 6277 /** 6278 * Setting for default DNS in case nobody suggests one 6279 * 6280 * @hide 6281 */ 6282 public static final String DEFAULT_DNS_SERVER = "default_dns_server"; 6283 6284 /** {@hide} */ 6285 public static final String 6286 BLUETOOTH_HEADSET_PRIORITY_PREFIX = "bluetooth_headset_priority_"; 6287 /** {@hide} */ 6288 public static final String 6289 BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX = "bluetooth_a2dp_sink_priority_"; 6290 /** {@hide} */ 6291 public static final String 6292 BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX = "bluetooth_input_device_priority_"; 6293 /** {@hide} */ 6294 public static final String 6295 BLUETOOTH_MAP_PRIORITY_PREFIX = "bluetooth_map_priority_"; 6296 6297 /** 6298 * Get the key that retrieves a bluetooth headset's priority. 6299 * @hide 6300 */ getBluetoothHeadsetPriorityKey(String address)6301 public static final String getBluetoothHeadsetPriorityKey(String address) { 6302 return BLUETOOTH_HEADSET_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6303 } 6304 6305 /** 6306 * Get the key that retrieves a bluetooth a2dp sink's priority. 6307 * @hide 6308 */ getBluetoothA2dpSinkPriorityKey(String address)6309 public static final String getBluetoothA2dpSinkPriorityKey(String address) { 6310 return BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6311 } 6312 6313 /** 6314 * Get the key that retrieves a bluetooth Input Device's priority. 6315 * @hide 6316 */ getBluetoothInputDevicePriorityKey(String address)6317 public static final String getBluetoothInputDevicePriorityKey(String address) { 6318 return BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6319 } 6320 6321 /** 6322 * Get the key that retrieves a bluetooth map priority. 6323 * @hide 6324 */ getBluetoothMapPriorityKey(String address)6325 public static final String getBluetoothMapPriorityKey(String address) { 6326 return BLUETOOTH_MAP_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6327 } 6328 /** 6329 * Scaling factor for normal window animations. Setting to 0 will 6330 * disable window animations. 6331 */ 6332 public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale"; 6333 6334 /** 6335 * Scaling factor for activity transition animations. Setting to 0 will 6336 * disable window animations. 6337 */ 6338 public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale"; 6339 6340 /** 6341 * Scaling factor for Animator-based animations. This affects both the 6342 * start delay and duration of all such animations. Setting to 0 will 6343 * cause animations to end immediately. The default value is 1. 6344 */ 6345 public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale"; 6346 6347 /** 6348 * Scaling factor for normal window animations. Setting to 0 will 6349 * disable window animations. 6350 * 6351 * @hide 6352 */ 6353 public static final String FANCY_IME_ANIMATIONS = "fancy_ime_animations"; 6354 6355 /** 6356 * If 0, the compatibility mode is off for all applications. 6357 * If 1, older applications run under compatibility mode. 6358 * TODO: remove this settings before code freeze (bug/1907571) 6359 * @hide 6360 */ 6361 public static final String COMPATIBILITY_MODE = "compatibility_mode"; 6362 6363 /** 6364 * CDMA only settings 6365 * Emergency Tone 0 = Off 6366 * 1 = Alert 6367 * 2 = Vibrate 6368 * @hide 6369 */ 6370 public static final String EMERGENCY_TONE = "emergency_tone"; 6371 6372 /** 6373 * CDMA only settings 6374 * Whether the auto retry is enabled. The value is 6375 * boolean (1 or 0). 6376 * @hide 6377 */ 6378 public static final String CALL_AUTO_RETRY = "call_auto_retry"; 6379 6380 /** 6381 * The preferred network mode 7 = Global 6382 * 6 = EvDo only 6383 * 5 = CDMA w/o EvDo 6384 * 4 = CDMA / EvDo auto 6385 * 3 = GSM / WCDMA auto 6386 * 2 = WCDMA only 6387 * 1 = GSM only 6388 * 0 = GSM / WCDMA preferred 6389 * @hide 6390 */ 6391 public static final String PREFERRED_NETWORK_MODE = 6392 "preferred_network_mode"; 6393 6394 /** 6395 * Setting to 1 will hide carrier network settings. 6396 * Default is 0. 6397 * @hide 6398 */ 6399 public static final String HIDE_CARRIER_NETWORK_SETTINGS = 6400 "hide_carrier_network_settings"; 6401 6402 /** 6403 * Name of an application package to be debugged. 6404 */ 6405 public static final String DEBUG_APP = "debug_app"; 6406 6407 /** 6408 * If 1, when launching DEBUG_APP it will wait for the debugger before 6409 * starting user code. If 0, it will run normally. 6410 */ 6411 public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger"; 6412 6413 /** 6414 * Control whether the process CPU usage meter should be shown. 6415 */ 6416 public static final String SHOW_PROCESSES = "show_processes"; 6417 6418 /** 6419 * If 1 low power mode is enabled. 6420 * @hide 6421 */ 6422 public static final String LOW_POWER_MODE = "low_power"; 6423 6424 /** 6425 * Battery level [1-99] at which low power mode automatically turns on. 6426 * If 0, it will not automatically turn on. 6427 * @hide 6428 */ 6429 public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level"; 6430 6431 /** 6432 * If 1, the activity manager will aggressively finish activities and 6433 * processes as soon as they are no longer needed. If 0, the normal 6434 * extended lifetime is used. 6435 */ 6436 public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities"; 6437 6438 /** 6439 * Use Dock audio output for media: 6440 * 0 = disabled 6441 * 1 = enabled 6442 * @hide 6443 */ 6444 public static final String DOCK_AUDIO_MEDIA_ENABLED = "dock_audio_media_enabled"; 6445 6446 /** 6447 * Persisted safe headphone volume management state by AudioService 6448 * @hide 6449 */ 6450 public static final String AUDIO_SAFE_VOLUME_STATE = "audio_safe_volume_state"; 6451 6452 /** 6453 * URL for tzinfo (time zone) updates 6454 * @hide 6455 */ 6456 public static final String TZINFO_UPDATE_CONTENT_URL = "tzinfo_content_url"; 6457 6458 /** 6459 * URL for tzinfo (time zone) update metadata 6460 * @hide 6461 */ 6462 public static final String TZINFO_UPDATE_METADATA_URL = "tzinfo_metadata_url"; 6463 6464 /** 6465 * URL for selinux (mandatory access control) updates 6466 * @hide 6467 */ 6468 public static final String SELINUX_UPDATE_CONTENT_URL = "selinux_content_url"; 6469 6470 /** 6471 * URL for selinux (mandatory access control) update metadata 6472 * @hide 6473 */ 6474 public static final String SELINUX_UPDATE_METADATA_URL = "selinux_metadata_url"; 6475 6476 /** 6477 * URL for sms short code updates 6478 * @hide 6479 */ 6480 public static final String SMS_SHORT_CODES_UPDATE_CONTENT_URL = 6481 "sms_short_codes_content_url"; 6482 6483 /** 6484 * URL for sms short code update metadata 6485 * @hide 6486 */ 6487 public static final String SMS_SHORT_CODES_UPDATE_METADATA_URL = 6488 "sms_short_codes_metadata_url"; 6489 6490 /** 6491 * URL for cert pinlist updates 6492 * @hide 6493 */ 6494 public static final String CERT_PIN_UPDATE_CONTENT_URL = "cert_pin_content_url"; 6495 6496 /** 6497 * URL for cert pinlist updates 6498 * @hide 6499 */ 6500 public static final String CERT_PIN_UPDATE_METADATA_URL = "cert_pin_metadata_url"; 6501 6502 /** 6503 * URL for intent firewall updates 6504 * @hide 6505 */ 6506 public static final String INTENT_FIREWALL_UPDATE_CONTENT_URL = 6507 "intent_firewall_content_url"; 6508 6509 /** 6510 * URL for intent firewall update metadata 6511 * @hide 6512 */ 6513 public static final String INTENT_FIREWALL_UPDATE_METADATA_URL = 6514 "intent_firewall_metadata_url"; 6515 6516 /** 6517 * SELinux enforcement status. If 0, permissive; if 1, enforcing. 6518 * @hide 6519 */ 6520 public static final String SELINUX_STATUS = "selinux_status"; 6521 6522 /** 6523 * Developer setting to force RTL layout. 6524 * @hide 6525 */ 6526 public static final String DEVELOPMENT_FORCE_RTL = "debug.force_rtl"; 6527 6528 /** 6529 * Milliseconds after screen-off after which low battery sounds will be silenced. 6530 * 6531 * If zero, battery sounds will always play. 6532 * Defaults to @integer/def_low_battery_sound_timeout in SettingsProvider. 6533 * 6534 * @hide 6535 */ 6536 public static final String LOW_BATTERY_SOUND_TIMEOUT = "low_battery_sound_timeout"; 6537 6538 /** 6539 * Milliseconds to wait before bouncing Wi-Fi after settings is restored. Note that after 6540 * the caller is done with this, they should call {@link ContentResolver#delete} to 6541 * clean up any value that they may have written. 6542 * 6543 * @hide 6544 */ 6545 public static final String WIFI_BOUNCE_DELAY_OVERRIDE_MS = "wifi_bounce_delay_override_ms"; 6546 6547 /** 6548 * Defines global runtime overrides to window policy. 6549 * 6550 * See {@link com.android.internal.policy.impl.PolicyControl} for value format. 6551 * 6552 * @hide 6553 */ 6554 public static final String POLICY_CONTROL = "policy_control"; 6555 6556 /** 6557 * Defines global zen mode. ZEN_MODE_OFF, ZEN_MODE_IMPORTANT_INTERRUPTIONS, 6558 * or ZEN_MODE_NO_INTERRUPTIONS. 6559 * 6560 * @hide 6561 */ 6562 public static final String ZEN_MODE = "zen_mode"; 6563 6564 /** @hide */ public static final int ZEN_MODE_OFF = 0; 6565 /** @hide */ public static final int ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1; 6566 /** @hide */ public static final int ZEN_MODE_NO_INTERRUPTIONS = 2; 6567 zenModeToString(int mode)6568 /** @hide */ public static String zenModeToString(int mode) { 6569 if (mode == ZEN_MODE_IMPORTANT_INTERRUPTIONS) return "ZEN_MODE_IMPORTANT_INTERRUPTIONS"; 6570 if (mode == ZEN_MODE_NO_INTERRUPTIONS) return "ZEN_MODE_NO_INTERRUPTIONS"; 6571 return "ZEN_MODE_OFF"; 6572 } 6573 6574 /** 6575 * Opaque value, changes when persisted zen mode configuration changes. 6576 * 6577 * @hide 6578 */ 6579 public static final String ZEN_MODE_CONFIG_ETAG = "zen_mode_config_etag"; 6580 6581 /** 6582 * Defines global heads up toggle. One of HEADS_UP_OFF, HEADS_UP_ON. 6583 * 6584 * @hide 6585 */ 6586 public static final String HEADS_UP_NOTIFICATIONS_ENABLED = 6587 "heads_up_notifications_enabled"; 6588 6589 /** @hide */ public static final int HEADS_UP_OFF = 0; 6590 /** @hide */ public static final int HEADS_UP_ON = 1; 6591 6592 /** 6593 * The name of the device 6594 * 6595 * @hide 6596 */ 6597 public static final String DEVICE_NAME = "device_name"; 6598 6599 /** 6600 * Whether it should be possible to create a guest user on the device. 6601 * <p> 6602 * Type: int (0 for disabled, 1 for enabled) 6603 * @hide 6604 */ 6605 public static final String GUEST_USER_ENABLED = "guest_user_enabled"; 6606 6607 /** 6608 * Whether the NetworkScoringService has been first initialized. 6609 * <p> 6610 * Type: int (0 for false, 1 for true) 6611 * @hide 6612 */ 6613 public static final String NETWORK_SCORING_PROVISIONED = "network_scoring_provisioned"; 6614 6615 /** 6616 * Whether the user wants to be prompted for password to decrypt the device on boot. 6617 * This only matters if the storage is encrypted. 6618 * <p> 6619 * Type: int (0 for false, 1 for true) 6620 * @hide 6621 */ 6622 public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt"; 6623 6624 /** 6625 * Whether the Volte/VT is enabled 6626 * <p> 6627 * Type: int (0 for false, 1 for true) 6628 * @hide 6629 */ 6630 public static final String ENHANCED_4G_MODE_ENABLED = "volte_vt_enabled"; 6631 6632 /** 6633 * Global override to disable VoLTE (independent of user setting) 6634 * <p> 6635 * Type: int (1 for disable VoLTE, 0 to use user configuration) 6636 * @hide 6637 */ 6638 public static final String VOLTE_FEATURE_DISABLED = "volte_feature_disabled"; 6639 6640 /** 6641 * Whether user can enable/disable LTE as a preferred network. A carrier might control 6642 * this via gservices, OMA-DM, carrier app, etc. 6643 * <p> 6644 * Type: int (0 for false, 1 for true) 6645 * @hide 6646 */ 6647 public static final String LTE_SERVICE_FORCED = "lte_service_forced"; 6648 6649 /** 6650 * Settings to backup. This is here so that it's in the same place as the settings 6651 * keys and easy to update. 6652 * 6653 * These keys may be mentioned in the SETTINGS_TO_BACKUP arrays in System 6654 * and Secure as well. This is because those tables drive both backup and 6655 * restore, and restore needs to properly whitelist keys that used to live 6656 * in those namespaces. The keys will only actually be backed up / restored 6657 * if they are also mentioned in this table (Global.SETTINGS_TO_BACKUP). 6658 * 6659 * NOTE: Settings are backed up and restored in the order they appear 6660 * in this array. If you have one setting depending on another, 6661 * make sure that they are ordered appropriately. 6662 * 6663 * @hide 6664 */ 6665 public static final String[] SETTINGS_TO_BACKUP = { 6666 BUGREPORT_IN_POWER_MENU, 6667 STAY_ON_WHILE_PLUGGED_IN, 6668 AUTO_TIME, 6669 AUTO_TIME_ZONE, 6670 POWER_SOUNDS_ENABLED, 6671 DOCK_SOUNDS_ENABLED, 6672 USB_MASS_STORAGE_ENABLED, 6673 ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 6674 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 6675 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, 6676 WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, 6677 WIFI_NUM_OPEN_NETWORKS_KEPT, 6678 EMERGENCY_TONE, 6679 CALL_AUTO_RETRY, 6680 DOCK_AUDIO_MEDIA_ENABLED, 6681 LOW_POWER_MODE_TRIGGER_LEVEL 6682 }; 6683 6684 // Populated lazily, guarded by class object: 6685 private static NameValueCache sNameValueCache = new NameValueCache( 6686 SYS_PROP_SETTING_VERSION, 6687 CONTENT_URI, 6688 CALL_METHOD_GET_GLOBAL, 6689 CALL_METHOD_PUT_GLOBAL); 6690 6691 // Certain settings have been moved from global to the per-user secure namespace 6692 private static final HashSet<String> MOVED_TO_SECURE; 6693 static { 6694 MOVED_TO_SECURE = new HashSet<String>(1); 6695 MOVED_TO_SECURE.add(Settings.Global.INSTALL_NON_MARKET_APPS); 6696 } 6697 6698 /** 6699 * Look up a name in the database. 6700 * @param resolver to access the database with 6701 * @param name to look up in the table 6702 * @return the corresponding value, or null if not present 6703 */ getString(ContentResolver resolver, String name)6704 public static String getString(ContentResolver resolver, String name) { 6705 return getStringForUser(resolver, name, UserHandle.myUserId()); 6706 } 6707 6708 /** @hide */ getStringForUser(ContentResolver resolver, String name, int userHandle)6709 public static String getStringForUser(ContentResolver resolver, String name, 6710 int userHandle) { 6711 if (MOVED_TO_SECURE.contains(name)) { 6712 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global" 6713 + " to android.provider.Settings.Secure, returning read-only value."); 6714 return Secure.getStringForUser(resolver, name, userHandle); 6715 } 6716 return sNameValueCache.getStringForUser(resolver, name, userHandle); 6717 } 6718 6719 /** 6720 * Store a name/value pair into the database. 6721 * @param resolver to access the database with 6722 * @param name to store 6723 * @param value to associate with the name 6724 * @return true if the value was set, false on database errors 6725 */ putString(ContentResolver resolver, String name, String value)6726 public static boolean putString(ContentResolver resolver, 6727 String name, String value) { 6728 return putStringForUser(resolver, name, value, UserHandle.myUserId()); 6729 } 6730 6731 /** @hide */ putStringForUser(ContentResolver resolver, String name, String value, int userHandle)6732 public static boolean putStringForUser(ContentResolver resolver, 6733 String name, String value, int userHandle) { 6734 if (LOCAL_LOGV) { 6735 Log.v(TAG, "Global.putString(name=" + name + ", value=" + value 6736 + " for " + userHandle); 6737 } 6738 // Global and Secure have the same access policy so we can forward writes 6739 if (MOVED_TO_SECURE.contains(name)) { 6740 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global" 6741 + " to android.provider.Settings.Secure, value is unchanged."); 6742 return Secure.putStringForUser(resolver, name, value, userHandle); 6743 } 6744 return sNameValueCache.putStringForUser(resolver, name, value, userHandle); 6745 } 6746 6747 /** 6748 * Construct the content URI for a particular name/value pair, 6749 * useful for monitoring changes with a ContentObserver. 6750 * @param name to look up in the table 6751 * @return the corresponding content URI, or null if not present 6752 */ getUriFor(String name)6753 public static Uri getUriFor(String name) { 6754 return getUriFor(CONTENT_URI, name); 6755 } 6756 6757 /** 6758 * Convenience function for retrieving a single secure settings value 6759 * as an integer. Note that internally setting values are always 6760 * stored as strings; this function converts the string to an integer 6761 * for you. The default value will be returned if the setting is 6762 * not defined or not an integer. 6763 * 6764 * @param cr The ContentResolver to access. 6765 * @param name The name of the setting to retrieve. 6766 * @param def Value to return if the setting is not defined. 6767 * 6768 * @return The setting's current value, or 'def' if it is not defined 6769 * or not a valid integer. 6770 */ getInt(ContentResolver cr, String name, int def)6771 public static int getInt(ContentResolver cr, String name, int def) { 6772 String v = getString(cr, name); 6773 try { 6774 return v != null ? Integer.parseInt(v) : def; 6775 } catch (NumberFormatException e) { 6776 return def; 6777 } 6778 } 6779 6780 /** 6781 * Convenience function for retrieving a single secure settings value 6782 * as an integer. Note that internally setting values are always 6783 * stored as strings; this function converts the string to an integer 6784 * for you. 6785 * <p> 6786 * This version does not take a default value. If the setting has not 6787 * been set, or the string value is not a number, 6788 * it throws {@link SettingNotFoundException}. 6789 * 6790 * @param cr The ContentResolver to access. 6791 * @param name The name of the setting to retrieve. 6792 * 6793 * @throws SettingNotFoundException Thrown if a setting by the given 6794 * name can't be found or the setting value is not an integer. 6795 * 6796 * @return The setting's current value. 6797 */ getInt(ContentResolver cr, String name)6798 public static int getInt(ContentResolver cr, String name) 6799 throws SettingNotFoundException { 6800 String v = getString(cr, name); 6801 try { 6802 return Integer.parseInt(v); 6803 } catch (NumberFormatException e) { 6804 throw new SettingNotFoundException(name); 6805 } 6806 } 6807 6808 /** 6809 * Convenience function for updating a single settings value as an 6810 * integer. This will either create a new entry in the table if the 6811 * given name does not exist, or modify the value of the existing row 6812 * with that name. Note that internally setting values are always 6813 * stored as strings, so this function converts the given value to a 6814 * string before storing it. 6815 * 6816 * @param cr The ContentResolver to access. 6817 * @param name The name of the setting to modify. 6818 * @param value The new value for the setting. 6819 * @return true if the value was set, false on database errors 6820 */ putInt(ContentResolver cr, String name, int value)6821 public static boolean putInt(ContentResolver cr, String name, int value) { 6822 return putString(cr, name, Integer.toString(value)); 6823 } 6824 6825 /** 6826 * Convenience function for retrieving a single secure settings value 6827 * as a {@code long}. Note that internally setting values are always 6828 * stored as strings; this function converts the string to a {@code long} 6829 * for you. The default value will be returned if the setting is 6830 * not defined or not a {@code long}. 6831 * 6832 * @param cr The ContentResolver to access. 6833 * @param name The name of the setting to retrieve. 6834 * @param def Value to return if the setting is not defined. 6835 * 6836 * @return The setting's current value, or 'def' if it is not defined 6837 * or not a valid {@code long}. 6838 */ getLong(ContentResolver cr, String name, long def)6839 public static long getLong(ContentResolver cr, String name, long def) { 6840 String valString = getString(cr, name); 6841 long value; 6842 try { 6843 value = valString != null ? Long.parseLong(valString) : def; 6844 } catch (NumberFormatException e) { 6845 value = def; 6846 } 6847 return value; 6848 } 6849 6850 /** 6851 * Convenience function for retrieving a single secure settings value 6852 * as a {@code long}. Note that internally setting values are always 6853 * stored as strings; this function converts the string to a {@code long} 6854 * for you. 6855 * <p> 6856 * This version does not take a default value. If the setting has not 6857 * been set, or the string value is not a number, 6858 * it throws {@link SettingNotFoundException}. 6859 * 6860 * @param cr The ContentResolver to access. 6861 * @param name The name of the setting to retrieve. 6862 * 6863 * @return The setting's current value. 6864 * @throws SettingNotFoundException Thrown if a setting by the given 6865 * name can't be found or the setting value is not an integer. 6866 */ getLong(ContentResolver cr, String name)6867 public static long getLong(ContentResolver cr, String name) 6868 throws SettingNotFoundException { 6869 String valString = getString(cr, name); 6870 try { 6871 return Long.parseLong(valString); 6872 } catch (NumberFormatException e) { 6873 throw new SettingNotFoundException(name); 6874 } 6875 } 6876 6877 /** 6878 * Convenience function for updating a secure settings value as a long 6879 * integer. This will either create a new entry in the table if the 6880 * given name does not exist, or modify the value of the existing row 6881 * with that name. Note that internally setting values are always 6882 * stored as strings, so this function converts the given value to a 6883 * string before storing it. 6884 * 6885 * @param cr The ContentResolver to access. 6886 * @param name The name of the setting to modify. 6887 * @param value The new value for the setting. 6888 * @return true if the value was set, false on database errors 6889 */ putLong(ContentResolver cr, String name, long value)6890 public static boolean putLong(ContentResolver cr, String name, long value) { 6891 return putString(cr, name, Long.toString(value)); 6892 } 6893 6894 /** 6895 * Convenience function for retrieving a single secure settings value 6896 * as a floating point number. Note that internally setting values are 6897 * always stored as strings; this function converts the string to an 6898 * float for you. The default value will be returned if the setting 6899 * is not defined or not a valid float. 6900 * 6901 * @param cr The ContentResolver to access. 6902 * @param name The name of the setting to retrieve. 6903 * @param def Value to return if the setting is not defined. 6904 * 6905 * @return The setting's current value, or 'def' if it is not defined 6906 * or not a valid float. 6907 */ getFloat(ContentResolver cr, String name, float def)6908 public static float getFloat(ContentResolver cr, String name, float def) { 6909 String v = getString(cr, name); 6910 try { 6911 return v != null ? Float.parseFloat(v) : def; 6912 } catch (NumberFormatException e) { 6913 return def; 6914 } 6915 } 6916 6917 /** 6918 * Convenience function for retrieving a single secure settings value 6919 * as a float. Note that internally setting values are always 6920 * stored as strings; this function converts the string to a float 6921 * for you. 6922 * <p> 6923 * This version does not take a default value. If the setting has not 6924 * been set, or the string value is not a number, 6925 * it throws {@link SettingNotFoundException}. 6926 * 6927 * @param cr The ContentResolver to access. 6928 * @param name The name of the setting to retrieve. 6929 * 6930 * @throws SettingNotFoundException Thrown if a setting by the given 6931 * name can't be found or the setting value is not a float. 6932 * 6933 * @return The setting's current value. 6934 */ getFloat(ContentResolver cr, String name)6935 public static float getFloat(ContentResolver cr, String name) 6936 throws SettingNotFoundException { 6937 String v = getString(cr, name); 6938 if (v == null) { 6939 throw new SettingNotFoundException(name); 6940 } 6941 try { 6942 return Float.parseFloat(v); 6943 } catch (NumberFormatException e) { 6944 throw new SettingNotFoundException(name); 6945 } 6946 } 6947 6948 /** 6949 * Convenience function for updating a single settings value as a 6950 * floating point number. This will either create a new entry in the 6951 * table if the given name does not exist, or modify the value of the 6952 * existing row with that name. Note that internally setting values 6953 * are always stored as strings, so this function converts the given 6954 * value to a string before storing it. 6955 * 6956 * @param cr The ContentResolver to access. 6957 * @param name The name of the setting to modify. 6958 * @param value The new value for the setting. 6959 * @return true if the value was set, false on database errors 6960 */ putFloat(ContentResolver cr, String name, float value)6961 public static boolean putFloat(ContentResolver cr, String name, float value) { 6962 return putString(cr, name, Float.toString(value)); 6963 } 6964 6965 6966 /** 6967 * Subscription to be used for voice call on a multi sim device. The supported values 6968 * are 0 = SUB1, 1 = SUB2 and etc. 6969 * @hide 6970 */ 6971 public static final String MULTI_SIM_VOICE_CALL_SUBSCRIPTION = "multi_sim_voice_call"; 6972 6973 /** 6974 * Used to provide option to user to select subscription during dial. 6975 * The supported values are 0 = disable or 1 = enable prompt. 6976 * @hide 6977 */ 6978 public static final String MULTI_SIM_VOICE_PROMPT = "multi_sim_voice_prompt"; 6979 6980 /** 6981 * Subscription to be used for data call on a multi sim device. The supported values 6982 * are 0 = SUB1, 1 = SUB2 and etc. 6983 * @hide 6984 */ 6985 public static final String MULTI_SIM_DATA_CALL_SUBSCRIPTION = "multi_sim_data_call"; 6986 6987 /** 6988 * Subscription to be used for SMS on a multi sim device. The supported values 6989 * are 0 = SUB1, 1 = SUB2 and etc. 6990 * @hide 6991 */ 6992 public static final String MULTI_SIM_SMS_SUBSCRIPTION = "multi_sim_sms"; 6993 6994 /** 6995 * Used to provide option to user to select subscription during send SMS. 6996 * The value 1 - enable, 0 - disable 6997 * @hide 6998 */ 6999 public static final String MULTI_SIM_SMS_PROMPT = "multi_sim_sms_prompt"; 7000 7001 7002 7003 /** User preferred subscriptions setting. 7004 * This holds the details of the user selected subscription from the card and 7005 * the activation status. Each settings string have the coma separated values 7006 * iccId,appType,appId,activationStatus,3gppIndex,3gpp2Index 7007 * @hide 7008 */ 7009 public static final String[] MULTI_SIM_USER_PREFERRED_SUBS = {"user_preferred_sub1", 7010 "user_preferred_sub2","user_preferred_sub3"}; 7011 } 7012 7013 /** 7014 * User-defined bookmarks and shortcuts. The target of each bookmark is an 7015 * Intent URL, allowing it to be either a web page or a particular 7016 * application activity. 7017 * 7018 * @hide 7019 */ 7020 public static final class Bookmarks implements BaseColumns 7021 { 7022 private static final String TAG = "Bookmarks"; 7023 7024 /** 7025 * The content:// style URL for this table 7026 */ 7027 public static final Uri CONTENT_URI = 7028 Uri.parse("content://" + AUTHORITY + "/bookmarks"); 7029 7030 /** 7031 * The row ID. 7032 * <p>Type: INTEGER</p> 7033 */ 7034 public static final String ID = "_id"; 7035 7036 /** 7037 * Descriptive name of the bookmark that can be displayed to the user. 7038 * If this is empty, the title should be resolved at display time (use 7039 * {@link #getTitle(Context, Cursor)} any time you want to display the 7040 * title of a bookmark.) 7041 * <P> 7042 * Type: TEXT 7043 * </P> 7044 */ 7045 public static final String TITLE = "title"; 7046 7047 /** 7048 * Arbitrary string (displayed to the user) that allows bookmarks to be 7049 * organized into categories. There are some special names for 7050 * standard folders, which all start with '@'. The label displayed for 7051 * the folder changes with the locale (via {@link #getLabelForFolder}) but 7052 * the folder name does not change so you can consistently query for 7053 * the folder regardless of the current locale. 7054 * 7055 * <P>Type: TEXT</P> 7056 * 7057 */ 7058 public static final String FOLDER = "folder"; 7059 7060 /** 7061 * The Intent URL of the bookmark, describing what it points to. This 7062 * value is given to {@link android.content.Intent#getIntent} to create 7063 * an Intent that can be launched. 7064 * <P>Type: TEXT</P> 7065 */ 7066 public static final String INTENT = "intent"; 7067 7068 /** 7069 * Optional shortcut character associated with this bookmark. 7070 * <P>Type: INTEGER</P> 7071 */ 7072 public static final String SHORTCUT = "shortcut"; 7073 7074 /** 7075 * The order in which the bookmark should be displayed 7076 * <P>Type: INTEGER</P> 7077 */ 7078 public static final String ORDERING = "ordering"; 7079 7080 private static final String[] sIntentProjection = { INTENT }; 7081 private static final String[] sShortcutProjection = { ID, SHORTCUT }; 7082 private static final String sShortcutSelection = SHORTCUT + "=?"; 7083 7084 /** 7085 * Convenience function to retrieve the bookmarked Intent for a 7086 * particular shortcut key. 7087 * 7088 * @param cr The ContentResolver to query. 7089 * @param shortcut The shortcut key. 7090 * 7091 * @return Intent The bookmarked URL, or null if there is no bookmark 7092 * matching the given shortcut. 7093 */ getIntentForShortcut(ContentResolver cr, char shortcut)7094 public static Intent getIntentForShortcut(ContentResolver cr, char shortcut) 7095 { 7096 Intent intent = null; 7097 7098 Cursor c = cr.query(CONTENT_URI, 7099 sIntentProjection, sShortcutSelection, 7100 new String[] { String.valueOf((int) shortcut) }, ORDERING); 7101 // Keep trying until we find a valid shortcut 7102 try { 7103 while (intent == null && c.moveToNext()) { 7104 try { 7105 String intentURI = c.getString(c.getColumnIndexOrThrow(INTENT)); 7106 intent = Intent.parseUri(intentURI, 0); 7107 } catch (java.net.URISyntaxException e) { 7108 // The stored URL is bad... ignore it. 7109 } catch (IllegalArgumentException e) { 7110 // Column not found 7111 Log.w(TAG, "Intent column not found", e); 7112 } 7113 } 7114 } finally { 7115 if (c != null) c.close(); 7116 } 7117 7118 return intent; 7119 } 7120 7121 /** 7122 * Add a new bookmark to the system. 7123 * 7124 * @param cr The ContentResolver to query. 7125 * @param intent The desired target of the bookmark. 7126 * @param title Bookmark title that is shown to the user; null if none 7127 * or it should be resolved to the intent's title. 7128 * @param folder Folder in which to place the bookmark; null if none. 7129 * @param shortcut Shortcut that will invoke the bookmark; 0 if none. If 7130 * this is non-zero and there is an existing bookmark entry 7131 * with this same shortcut, then that existing shortcut is 7132 * cleared (the bookmark is not removed). 7133 * @return The unique content URL for the new bookmark entry. 7134 */ add(ContentResolver cr, Intent intent, String title, String folder, char shortcut, int ordering)7135 public static Uri add(ContentResolver cr, 7136 Intent intent, 7137 String title, 7138 String folder, 7139 char shortcut, 7140 int ordering) 7141 { 7142 // If a shortcut is supplied, and it is already defined for 7143 // another bookmark, then remove the old definition. 7144 if (shortcut != 0) { 7145 cr.delete(CONTENT_URI, sShortcutSelection, 7146 new String[] { String.valueOf((int) shortcut) }); 7147 } 7148 7149 ContentValues values = new ContentValues(); 7150 if (title != null) values.put(TITLE, title); 7151 if (folder != null) values.put(FOLDER, folder); 7152 values.put(INTENT, intent.toUri(0)); 7153 if (shortcut != 0) values.put(SHORTCUT, (int) shortcut); 7154 values.put(ORDERING, ordering); 7155 return cr.insert(CONTENT_URI, values); 7156 } 7157 7158 /** 7159 * Return the folder name as it should be displayed to the user. This 7160 * takes care of localizing special folders. 7161 * 7162 * @param r Resources object for current locale; only need access to 7163 * system resources. 7164 * @param folder The value found in the {@link #FOLDER} column. 7165 * 7166 * @return CharSequence The label for this folder that should be shown 7167 * to the user. 7168 */ getLabelForFolder(Resources r, String folder)7169 public static CharSequence getLabelForFolder(Resources r, String folder) { 7170 return folder; 7171 } 7172 7173 /** 7174 * Return the title as it should be displayed to the user. This takes 7175 * care of localizing bookmarks that point to activities. 7176 * 7177 * @param context A context. 7178 * @param cursor A cursor pointing to the row whose title should be 7179 * returned. The cursor must contain at least the {@link #TITLE} 7180 * and {@link #INTENT} columns. 7181 * @return A title that is localized and can be displayed to the user, 7182 * or the empty string if one could not be found. 7183 */ getTitle(Context context, Cursor cursor)7184 public static CharSequence getTitle(Context context, Cursor cursor) { 7185 int titleColumn = cursor.getColumnIndex(TITLE); 7186 int intentColumn = cursor.getColumnIndex(INTENT); 7187 if (titleColumn == -1 || intentColumn == -1) { 7188 throw new IllegalArgumentException( 7189 "The cursor must contain the TITLE and INTENT columns."); 7190 } 7191 7192 String title = cursor.getString(titleColumn); 7193 if (!TextUtils.isEmpty(title)) { 7194 return title; 7195 } 7196 7197 String intentUri = cursor.getString(intentColumn); 7198 if (TextUtils.isEmpty(intentUri)) { 7199 return ""; 7200 } 7201 7202 Intent intent; 7203 try { 7204 intent = Intent.parseUri(intentUri, 0); 7205 } catch (URISyntaxException e) { 7206 return ""; 7207 } 7208 7209 PackageManager packageManager = context.getPackageManager(); 7210 ResolveInfo info = packageManager.resolveActivity(intent, 0); 7211 return info != null ? info.loadLabel(packageManager) : ""; 7212 } 7213 } 7214 7215 /** 7216 * Returns the device ID that we should use when connecting to the mobile gtalk server. 7217 * This is a string like "android-0x1242", where the hex string is the Android ID obtained 7218 * from the GoogleLoginService. 7219 * 7220 * @param androidId The Android ID for this device. 7221 * @return The device ID that should be used when connecting to the mobile gtalk server. 7222 * @hide 7223 */ getGTalkDeviceId(long androidId)7224 public static String getGTalkDeviceId(long androidId) { 7225 return "android-" + Long.toHexString(androidId); 7226 } 7227 } 7228