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 * @hide 791 */ 792 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 793 public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS 794 = "android.settings.NOTIFICATION_LISTENER_SETTINGS"; 795 796 /** 797 * @hide 798 */ 799 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 800 public static final String ACTION_CONDITION_PROVIDER_SETTINGS 801 = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS"; 802 803 /** 804 * Activity Action: Show settings for video captioning. 805 * <p> 806 * In some cases, a matching Activity may not exist, so ensure you safeguard 807 * against this. 808 * <p> 809 * Input: Nothing. 810 * <p> 811 * Output: Nothing. 812 */ 813 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 814 public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS"; 815 816 /** 817 * Activity Action: Show the top level print settings. 818 * <p> 819 * In some cases, a matching Activity may not exist, so ensure you 820 * safeguard against this. 821 * <p> 822 * Input: Nothing. 823 * <p> 824 * Output: Nothing. 825 */ 826 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 827 public static final String ACTION_PRINT_SETTINGS = 828 "android.settings.ACTION_PRINT_SETTINGS"; 829 830 /** 831 * Activity Action: Show Zen Mode configuration settings. 832 * 833 * @hide 834 */ 835 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 836 public static final String ACTION_ZEN_MODE_SETTINGS = "android.settings.ZEN_MODE_SETTINGS"; 837 838 /** 839 * Activity Action: Show the regulatory information screen for the device. 840 * <p> 841 * In some cases, a matching Activity may not exist, so ensure you safeguard 842 * against this. 843 * <p> 844 * Input: Nothing. 845 * <p> 846 * Output: Nothing. 847 */ 848 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 849 public static final String 850 ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO"; 851 852 /** 853 * Activity Action: Show Device Name Settings. 854 * <p> 855 * In some cases, a matching Activity may not exist, so ensure you safeguard 856 * against this. 857 * 858 * @hide 859 */ 860 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 861 public static final String DEVICE_NAME_SETTINGS = "android.settings.DEVICE_NAME"; 862 863 /** 864 * Activity Action: Show pairing settings. 865 * <p> 866 * In some cases, a matching Activity may not exist, so ensure you safeguard 867 * against this. 868 * 869 * @hide 870 */ 871 @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) 872 public static final String ACTION_PAIRING_SETTINGS = "android.settings.PAIRING_SETTINGS"; 873 874 /** 875 * Activity Action: Show battery saver settings. 876 * 877 * @hide 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 #INPUT_METHOD_SETTINGS} intent opens the keyboard layout dialog for the 988 * 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 * Whether lock-to-app will lock the keyguard when exiting. 2629 * @hide 2630 */ 2631 public static final String LOCK_TO_APP_EXIT_LOCKED = "lock_to_app_exit_locked"; 2632 2633 /** 2634 * I am the lolrus. 2635 * <p> 2636 * Nonzero values indicate that the user has a bukkit. 2637 * Backward-compatible with <code>PrefGetPreference(prefAllowEasterEggs)</code>. 2638 * @hide 2639 */ 2640 public static final String EGG_MODE = "egg_mode"; 2641 2642 /** 2643 * Settings to backup. This is here so that it's in the same place as the settings 2644 * keys and easy to update. 2645 * 2646 * NOTE: Settings are backed up and restored in the order they appear 2647 * in this array. If you have one setting depending on another, 2648 * make sure that they are ordered appropriately. 2649 * 2650 * @hide 2651 */ 2652 public static final String[] SETTINGS_TO_BACKUP = { 2653 STAY_ON_WHILE_PLUGGED_IN, // moved to global 2654 WIFI_USE_STATIC_IP, 2655 WIFI_STATIC_IP, 2656 WIFI_STATIC_GATEWAY, 2657 WIFI_STATIC_NETMASK, 2658 WIFI_STATIC_DNS1, 2659 WIFI_STATIC_DNS2, 2660 BLUETOOTH_DISCOVERABILITY, 2661 BLUETOOTH_DISCOVERABILITY_TIMEOUT, 2662 DIM_SCREEN, 2663 SCREEN_OFF_TIMEOUT, 2664 SCREEN_BRIGHTNESS, 2665 SCREEN_BRIGHTNESS_MODE, 2666 SCREEN_AUTO_BRIGHTNESS_ADJ, 2667 VIBRATE_INPUT_DEVICES, 2668 MODE_RINGER_STREAMS_AFFECTED, 2669 VOLUME_VOICE, 2670 VOLUME_SYSTEM, 2671 VOLUME_RING, 2672 VOLUME_MUSIC, 2673 VOLUME_ALARM, 2674 VOLUME_NOTIFICATION, 2675 VOLUME_BLUETOOTH_SCO, 2676 VOLUME_VOICE + APPEND_FOR_LAST_AUDIBLE, 2677 VOLUME_SYSTEM + APPEND_FOR_LAST_AUDIBLE, 2678 VOLUME_RING + APPEND_FOR_LAST_AUDIBLE, 2679 VOLUME_MUSIC + APPEND_FOR_LAST_AUDIBLE, 2680 VOLUME_ALARM + APPEND_FOR_LAST_AUDIBLE, 2681 VOLUME_NOTIFICATION + APPEND_FOR_LAST_AUDIBLE, 2682 VOLUME_BLUETOOTH_SCO + APPEND_FOR_LAST_AUDIBLE, 2683 TEXT_AUTO_REPLACE, 2684 TEXT_AUTO_CAPS, 2685 TEXT_AUTO_PUNCTUATE, 2686 TEXT_SHOW_PASSWORD, 2687 AUTO_TIME, // moved to global 2688 AUTO_TIME_ZONE, // moved to global 2689 TIME_12_24, 2690 DATE_FORMAT, 2691 DTMF_TONE_WHEN_DIALING, 2692 DTMF_TONE_TYPE_WHEN_DIALING, 2693 HEARING_AID, 2694 TTY_MODE, 2695 SOUND_EFFECTS_ENABLED, 2696 HAPTIC_FEEDBACK_ENABLED, 2697 POWER_SOUNDS_ENABLED, // moved to global 2698 DOCK_SOUNDS_ENABLED, // moved to global 2699 LOCKSCREEN_SOUNDS_ENABLED, 2700 SHOW_WEB_SUGGESTIONS, 2701 NOTIFICATION_LIGHT_PULSE, 2702 SIP_CALL_OPTIONS, 2703 SIP_RECEIVE_CALLS, 2704 POINTER_SPEED, 2705 VIBRATE_WHEN_RINGING, 2706 RINGTONE, 2707 NOTIFICATION_SOUND 2708 }; 2709 2710 /** 2711 * These entries are considered common between the personal and the managed profile, 2712 * since the managed profile doesn't get to change them. 2713 * @hide 2714 */ 2715 public static final String[] CLONE_TO_MANAGED_PROFILE = { 2716 DATE_FORMAT, 2717 HAPTIC_FEEDBACK_ENABLED, 2718 SOUND_EFFECTS_ENABLED, 2719 TEXT_SHOW_PASSWORD, 2720 TIME_12_24 2721 }; 2722 2723 /** 2724 * When to use Wi-Fi calling 2725 * 2726 * @see android.telephony.TelephonyManager.WifiCallingChoices 2727 * @hide 2728 */ 2729 public static final String WHEN_TO_MAKE_WIFI_CALLS = "when_to_make_wifi_calls"; 2730 2731 // Settings moved to Settings.Secure 2732 2733 /** 2734 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED} 2735 * instead 2736 */ 2737 @Deprecated 2738 public static final String ADB_ENABLED = Global.ADB_ENABLED; 2739 2740 /** 2741 * @deprecated Use {@link android.provider.Settings.Secure#ANDROID_ID} instead 2742 */ 2743 @Deprecated 2744 public static final String ANDROID_ID = Secure.ANDROID_ID; 2745 2746 /** 2747 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead 2748 */ 2749 @Deprecated 2750 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON; 2751 2752 /** 2753 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead 2754 */ 2755 @Deprecated 2756 public static final String DATA_ROAMING = Global.DATA_ROAMING; 2757 2758 /** 2759 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead 2760 */ 2761 @Deprecated 2762 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED; 2763 2764 /** 2765 * @deprecated Use {@link android.provider.Settings.Global#HTTP_PROXY} instead 2766 */ 2767 @Deprecated 2768 public static final String HTTP_PROXY = Global.HTTP_PROXY; 2769 2770 /** 2771 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead 2772 */ 2773 @Deprecated 2774 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS; 2775 2776 /** 2777 * @deprecated Use {@link android.provider.Settings.Secure#LOCATION_PROVIDERS_ALLOWED} 2778 * instead 2779 */ 2780 @Deprecated 2781 public static final String LOCATION_PROVIDERS_ALLOWED = Secure.LOCATION_PROVIDERS_ALLOWED; 2782 2783 /** 2784 * @deprecated Use {@link android.provider.Settings.Secure#LOGGING_ID} instead 2785 */ 2786 @Deprecated 2787 public static final String LOGGING_ID = Secure.LOGGING_ID; 2788 2789 /** 2790 * @deprecated Use {@link android.provider.Settings.Global#NETWORK_PREFERENCE} instead 2791 */ 2792 @Deprecated 2793 public static final String NETWORK_PREFERENCE = Global.NETWORK_PREFERENCE; 2794 2795 /** 2796 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_ENABLED} 2797 * instead 2798 */ 2799 @Deprecated 2800 public static final String PARENTAL_CONTROL_ENABLED = Secure.PARENTAL_CONTROL_ENABLED; 2801 2802 /** 2803 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_LAST_UPDATE} 2804 * instead 2805 */ 2806 @Deprecated 2807 public static final String PARENTAL_CONTROL_LAST_UPDATE = Secure.PARENTAL_CONTROL_LAST_UPDATE; 2808 2809 /** 2810 * @deprecated Use {@link android.provider.Settings.Secure#PARENTAL_CONTROL_REDIRECT_URL} 2811 * instead 2812 */ 2813 @Deprecated 2814 public static final String PARENTAL_CONTROL_REDIRECT_URL = 2815 Secure.PARENTAL_CONTROL_REDIRECT_URL; 2816 2817 /** 2818 * @deprecated Use {@link android.provider.Settings.Secure#SETTINGS_CLASSNAME} instead 2819 */ 2820 @Deprecated 2821 public static final String SETTINGS_CLASSNAME = Secure.SETTINGS_CLASSNAME; 2822 2823 /** 2824 * @deprecated Use {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED} instead 2825 */ 2826 @Deprecated 2827 public static final String USB_MASS_STORAGE_ENABLED = Global.USB_MASS_STORAGE_ENABLED; 2828 2829 /** 2830 * @deprecated Use {@link android.provider.Settings.Global#USE_GOOGLE_MAIL} instead 2831 */ 2832 @Deprecated 2833 public static final String USE_GOOGLE_MAIL = Global.USE_GOOGLE_MAIL; 2834 2835 /** 2836 * @deprecated Use 2837 * {@link android.provider.Settings.Global#WIFI_MAX_DHCP_RETRY_COUNT} instead 2838 */ 2839 @Deprecated 2840 public static final String WIFI_MAX_DHCP_RETRY_COUNT = Global.WIFI_MAX_DHCP_RETRY_COUNT; 2841 2842 /** 2843 * @deprecated Use 2844 * {@link android.provider.Settings.Global#WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS} instead 2845 */ 2846 @Deprecated 2847 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = 2848 Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS; 2849 2850 /** 2851 * @deprecated Use 2852 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON} instead 2853 */ 2854 @Deprecated 2855 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = 2856 Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON; 2857 2858 /** 2859 * @deprecated Use 2860 * {@link android.provider.Settings.Global#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} instead 2861 */ 2862 @Deprecated 2863 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = 2864 Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY; 2865 2866 /** 2867 * @deprecated Use {@link android.provider.Settings.Global#WIFI_NUM_OPEN_NETWORKS_KEPT} 2868 * instead 2869 */ 2870 @Deprecated 2871 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = Global.WIFI_NUM_OPEN_NETWORKS_KEPT; 2872 2873 /** 2874 * @deprecated Use {@link android.provider.Settings.Global#WIFI_ON} instead 2875 */ 2876 @Deprecated 2877 public static final String WIFI_ON = Global.WIFI_ON; 2878 2879 /** 2880 * @deprecated Use 2881 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE} 2882 * instead 2883 */ 2884 @Deprecated 2885 public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = 2886 Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE; 2887 2888 /** 2889 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_AP_COUNT} instead 2890 */ 2891 @Deprecated 2892 public static final String WIFI_WATCHDOG_AP_COUNT = Secure.WIFI_WATCHDOG_AP_COUNT; 2893 2894 /** 2895 * @deprecated Use 2896 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS} instead 2897 */ 2898 @Deprecated 2899 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = 2900 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS; 2901 2902 /** 2903 * @deprecated Use 2904 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED} instead 2905 */ 2906 @Deprecated 2907 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = 2908 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED; 2909 2910 /** 2911 * @deprecated Use 2912 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS} 2913 * instead 2914 */ 2915 @Deprecated 2916 public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = 2917 Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS; 2918 2919 /** 2920 * @deprecated Use 2921 * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT} instead 2922 */ 2923 @Deprecated 2924 public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = 2925 Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT; 2926 2927 /** 2928 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_MAX_AP_CHECKS} 2929 * instead 2930 */ 2931 @Deprecated 2932 public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = Secure.WIFI_WATCHDOG_MAX_AP_CHECKS; 2933 2934 /** 2935 * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead 2936 */ 2937 @Deprecated 2938 public static final String WIFI_WATCHDOG_ON = Global.WIFI_WATCHDOG_ON; 2939 2940 /** 2941 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_COUNT} instead 2942 */ 2943 @Deprecated 2944 public static final String WIFI_WATCHDOG_PING_COUNT = Secure.WIFI_WATCHDOG_PING_COUNT; 2945 2946 /** 2947 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_DELAY_MS} 2948 * instead 2949 */ 2950 @Deprecated 2951 public static final String WIFI_WATCHDOG_PING_DELAY_MS = Secure.WIFI_WATCHDOG_PING_DELAY_MS; 2952 2953 /** 2954 * @deprecated Use {@link android.provider.Settings.Secure#WIFI_WATCHDOG_PING_TIMEOUT_MS} 2955 * instead 2956 */ 2957 @Deprecated 2958 public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = 2959 Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS; 2960 } 2961 2962 /** 2963 * Secure system settings, containing system preferences that applications 2964 * can read but are not allowed to write. These are for preferences that 2965 * the user must explicitly modify through the system UI or specialized 2966 * APIs for those values, not modified directly by applications. 2967 */ 2968 public static final class Secure extends NameValueTable { 2969 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version"; 2970 2971 /** 2972 * The content:// style URL for this table 2973 */ 2974 public static final Uri CONTENT_URI = 2975 Uri.parse("content://" + AUTHORITY + "/secure"); 2976 2977 // Populated lazily, guarded by class object: 2978 private static final NameValueCache sNameValueCache = new NameValueCache( 2979 SYS_PROP_SETTING_VERSION, 2980 CONTENT_URI, 2981 CALL_METHOD_GET_SECURE, 2982 CALL_METHOD_PUT_SECURE); 2983 2984 private static ILockSettings sLockSettings = null; 2985 2986 private static boolean sIsSystemProcess; 2987 private static final HashSet<String> MOVED_TO_LOCK_SETTINGS; 2988 private static final HashSet<String> MOVED_TO_GLOBAL; 2989 static { 2990 MOVED_TO_LOCK_SETTINGS = new HashSet<String>(3); 2991 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_ENABLED); 2992 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_VISIBLE); 2993 MOVED_TO_LOCK_SETTINGS.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); 2994 2995 MOVED_TO_GLOBAL = new HashSet<String>(); 2996 MOVED_TO_GLOBAL.add(Settings.Global.ADB_ENABLED); 2997 MOVED_TO_GLOBAL.add(Settings.Global.ASSISTED_GPS_ENABLED); 2998 MOVED_TO_GLOBAL.add(Settings.Global.BLUETOOTH_ON); 2999 MOVED_TO_GLOBAL.add(Settings.Global.BUGREPORT_IN_POWER_MENU); 3000 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_CELL_BROADCAST_SMS); 3001 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_ROAMING_MODE); 3002 MOVED_TO_GLOBAL.add(Settings.Global.CDMA_SUBSCRIPTION_MODE); 3003 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_MOBILE); 3004 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ACTIVITY_TIMEOUT_WIFI); 3005 MOVED_TO_GLOBAL.add(Settings.Global.DATA_ROAMING); 3006 MOVED_TO_GLOBAL.add(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED); 3007 MOVED_TO_GLOBAL.add(Settings.Global.DEVICE_PROVISIONED); 3008 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_DENSITY_FORCED); 3009 MOVED_TO_GLOBAL.add(Settings.Global.DISPLAY_SIZE_FORCED); 3010 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE); 3011 MOVED_TO_GLOBAL.add(Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE); 3012 MOVED_TO_GLOBAL.add(Settings.Global.MOBILE_DATA); 3013 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_BUCKET_DURATION); 3014 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_DELETE_AGE); 3015 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_PERSIST_BYTES); 3016 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_DEV_ROTATE_AGE); 3017 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_ENABLED); 3018 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_GLOBAL_ALERT_BYTES); 3019 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_POLL_INTERVAL); 3020 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_REPORT_XT_OVER_DEV); 3021 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_SAMPLE_ENABLED); 3022 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_TIME_CACHE_MAX_AGE); 3023 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_BUCKET_DURATION); 3024 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_DELETE_AGE); 3025 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_PERSIST_BYTES); 3026 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_ROTATE_AGE); 3027 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_BUCKET_DURATION); 3028 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_DELETE_AGE); 3029 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_PERSIST_BYTES); 3030 MOVED_TO_GLOBAL.add(Settings.Global.NETSTATS_UID_TAG_ROTATE_AGE); 3031 MOVED_TO_GLOBAL.add(Settings.Global.NETWORK_PREFERENCE); 3032 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_DIFF); 3033 MOVED_TO_GLOBAL.add(Settings.Global.NITZ_UPDATE_SPACING); 3034 MOVED_TO_GLOBAL.add(Settings.Global.NTP_SERVER); 3035 MOVED_TO_GLOBAL.add(Settings.Global.NTP_TIMEOUT); 3036 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_ERROR_POLL_COUNT); 3037 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_LONG_POLL_INTERVAL_MS); 3038 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT); 3039 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_POLL_INTERVAL_MS); 3040 MOVED_TO_GLOBAL.add(Settings.Global.PDP_WATCHDOG_TRIGGER_PACKET_COUNT); 3041 MOVED_TO_GLOBAL.add(Settings.Global.SAMPLING_PROFILER_MS); 3042 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL); 3043 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_REDIR_HOST); 3044 MOVED_TO_GLOBAL.add(Settings.Global.SETUP_PREPAID_DETECTION_TARGET_URL); 3045 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_APN); 3046 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_DUN_REQUIRED); 3047 MOVED_TO_GLOBAL.add(Settings.Global.TETHER_SUPPORTED); 3048 MOVED_TO_GLOBAL.add(Settings.Global.USB_MASS_STORAGE_ENABLED); 3049 MOVED_TO_GLOBAL.add(Settings.Global.USE_GOOGLE_MAIL); 3050 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_COUNTRY_CODE); 3051 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FRAMEWORK_SCAN_INTERVAL_MS); 3052 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_FREQUENCY_BAND); 3053 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_IDLE_MS); 3054 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT); 3055 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS); 3056 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON); 3057 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY); 3058 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NUM_OPEN_NETWORKS_KEPT); 3059 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ON); 3060 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_DEVICE_NAME); 3061 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE); 3062 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS); 3063 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED); 3064 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ENHANCED_AUTO_JOIN); 3065 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NETWORK_SHOW_RSSI); 3066 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_ON); 3067 MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED); 3068 MOVED_TO_GLOBAL.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON); 3069 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_ENABLE); 3070 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT); 3071 MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE); 3072 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS); 3073 MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS); 3074 MOVED_TO_GLOBAL.add(Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS); 3075 MOVED_TO_GLOBAL.add(Settings.Global.WTF_IS_FATAL); 3076 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD); 3077 MOVED_TO_GLOBAL.add(Settings.Global.BATTERY_DISCHARGE_THRESHOLD); 3078 MOVED_TO_GLOBAL.add(Settings.Global.SEND_ACTION_APP_ERROR); 3079 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_AGE_SECONDS); 3080 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_MAX_FILES); 3081 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_KB); 3082 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_QUOTA_PERCENT); 3083 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_RESERVE_PERCENT); 3084 MOVED_TO_GLOBAL.add(Settings.Global.DROPBOX_TAG_PREFIX); 3085 MOVED_TO_GLOBAL.add(Settings.Global.ERROR_LOGCAT_PREFIX); 3086 MOVED_TO_GLOBAL.add(Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL); 3087 MOVED_TO_GLOBAL.add(Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD); 3088 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE); 3089 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES); 3090 MOVED_TO_GLOBAL.add(Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES); 3091 MOVED_TO_GLOBAL.add(Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS); 3092 MOVED_TO_GLOBAL.add(Settings.Global.CONNECTIVITY_CHANGE_DELAY); 3093 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED); 3094 MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_SERVER); 3095 MOVED_TO_GLOBAL.add(Settings.Global.NSD_ON); 3096 MOVED_TO_GLOBAL.add(Settings.Global.SET_INSTALL_LOCATION); 3097 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_INSTALL_LOCATION); 3098 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY); 3099 MOVED_TO_GLOBAL.add(Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY); 3100 MOVED_TO_GLOBAL.add(Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT); 3101 MOVED_TO_GLOBAL.add(Settings.Global.HTTP_PROXY); 3102 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_HOST); 3103 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_PORT); 3104 MOVED_TO_GLOBAL.add(Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST); 3105 MOVED_TO_GLOBAL.add(Settings.Global.SET_GLOBAL_HTTP_PROXY); 3106 MOVED_TO_GLOBAL.add(Settings.Global.DEFAULT_DNS_SERVER); 3107 MOVED_TO_GLOBAL.add(Settings.Global.PREFERRED_NETWORK_MODE); 3108 MOVED_TO_GLOBAL.add(Settings.Global.WEBVIEW_DATA_REDUCTION_PROXY_KEY); 3109 } 3110 3111 /** @hide */ getMovedKeys(HashSet<String> outKeySet)3112 public static void getMovedKeys(HashSet<String> outKeySet) { 3113 outKeySet.addAll(MOVED_TO_GLOBAL); 3114 } 3115 3116 /** 3117 * Look up a name in the database. 3118 * @param resolver to access the database with 3119 * @param name to look up in the table 3120 * @return the corresponding value, or null if not present 3121 */ getString(ContentResolver resolver, String name)3122 public static String getString(ContentResolver resolver, String name) { 3123 return getStringForUser(resolver, name, UserHandle.myUserId()); 3124 } 3125 3126 /** @hide */ getStringForUser(ContentResolver resolver, String name, int userHandle)3127 public static String getStringForUser(ContentResolver resolver, String name, 3128 int userHandle) { 3129 if (MOVED_TO_GLOBAL.contains(name)) { 3130 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure" 3131 + " to android.provider.Settings.Global."); 3132 return Global.getStringForUser(resolver, name, userHandle); 3133 } 3134 3135 if (MOVED_TO_LOCK_SETTINGS.contains(name)) { 3136 synchronized (Secure.class) { 3137 if (sLockSettings == null) { 3138 sLockSettings = ILockSettings.Stub.asInterface( 3139 (IBinder) ServiceManager.getService("lock_settings")); 3140 sIsSystemProcess = Process.myUid() == Process.SYSTEM_UID; 3141 } 3142 } 3143 if (sLockSettings != null && !sIsSystemProcess) { 3144 try { 3145 return sLockSettings.getString(name, "0", userHandle); 3146 } catch (RemoteException re) { 3147 // Fall through 3148 } 3149 } 3150 } 3151 3152 return sNameValueCache.getStringForUser(resolver, name, userHandle); 3153 } 3154 3155 /** 3156 * Store a name/value pair into the database. 3157 * @param resolver to access the database with 3158 * @param name to store 3159 * @param value to associate with the name 3160 * @return true if the value was set, false on database errors 3161 */ putString(ContentResolver resolver, String name, String value)3162 public static boolean putString(ContentResolver resolver, String name, String value) { 3163 return putStringForUser(resolver, name, value, UserHandle.myUserId()); 3164 } 3165 3166 /** @hide */ putStringForUser(ContentResolver resolver, String name, String value, int userHandle)3167 public static boolean putStringForUser(ContentResolver resolver, String name, String value, 3168 int userHandle) { 3169 if (LOCATION_MODE.equals(name)) { 3170 // HACK ALERT: temporary hack to work around b/10491283. 3171 // TODO: once b/10491283 fixed, remove this hack 3172 return setLocationModeForUser(resolver, Integer.parseInt(value), userHandle); 3173 } 3174 if (MOVED_TO_GLOBAL.contains(name)) { 3175 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.System" 3176 + " to android.provider.Settings.Global"); 3177 return Global.putStringForUser(resolver, name, value, userHandle); 3178 } 3179 return sNameValueCache.putStringForUser(resolver, name, value, userHandle); 3180 } 3181 3182 /** 3183 * Construct the content URI for a particular name/value pair, 3184 * useful for monitoring changes with a ContentObserver. 3185 * @param name to look up in the table 3186 * @return the corresponding content URI, or null if not present 3187 */ getUriFor(String name)3188 public static Uri getUriFor(String name) { 3189 if (MOVED_TO_GLOBAL.contains(name)) { 3190 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Secure" 3191 + " to android.provider.Settings.Global, returning global URI."); 3192 return Global.getUriFor(Global.CONTENT_URI, name); 3193 } 3194 return getUriFor(CONTENT_URI, name); 3195 } 3196 3197 /** 3198 * Convenience function for retrieving a single secure settings value 3199 * as an integer. Note that internally setting values are always 3200 * stored as strings; this function converts the string to an integer 3201 * for you. The default value will be returned if the setting is 3202 * not defined or not an integer. 3203 * 3204 * @param cr The ContentResolver to access. 3205 * @param name The name of the setting to retrieve. 3206 * @param def Value to return if the setting is not defined. 3207 * 3208 * @return The setting's current value, or 'def' if it is not defined 3209 * or not a valid integer. 3210 */ getInt(ContentResolver cr, String name, int def)3211 public static int getInt(ContentResolver cr, String name, int def) { 3212 return getIntForUser(cr, name, def, UserHandle.myUserId()); 3213 } 3214 3215 /** @hide */ getIntForUser(ContentResolver cr, String name, int def, int userHandle)3216 public static int getIntForUser(ContentResolver cr, String name, int def, int userHandle) { 3217 if (LOCATION_MODE.equals(name)) { 3218 // HACK ALERT: temporary hack to work around b/10491283. 3219 // TODO: once b/10491283 fixed, remove this hack 3220 return getLocationModeForUser(cr, userHandle); 3221 } 3222 String v = getStringForUser(cr, name, userHandle); 3223 try { 3224 return v != null ? Integer.parseInt(v) : def; 3225 } catch (NumberFormatException e) { 3226 return def; 3227 } 3228 } 3229 3230 /** 3231 * Convenience function for retrieving a single secure settings value 3232 * as an integer. Note that internally setting values are always 3233 * stored as strings; this function converts the string to an integer 3234 * for you. 3235 * <p> 3236 * This version does not take a default value. If the setting has not 3237 * been set, or the string value is not a number, 3238 * it throws {@link SettingNotFoundException}. 3239 * 3240 * @param cr The ContentResolver to access. 3241 * @param name The name of the setting to retrieve. 3242 * 3243 * @throws SettingNotFoundException Thrown if a setting by the given 3244 * name can't be found or the setting value is not an integer. 3245 * 3246 * @return The setting's current value. 3247 */ getInt(ContentResolver cr, String name)3248 public static int getInt(ContentResolver cr, String name) 3249 throws SettingNotFoundException { 3250 return getIntForUser(cr, name, UserHandle.myUserId()); 3251 } 3252 3253 /** @hide */ getIntForUser(ContentResolver cr, String name, int userHandle)3254 public static int getIntForUser(ContentResolver cr, String name, int userHandle) 3255 throws SettingNotFoundException { 3256 if (LOCATION_MODE.equals(name)) { 3257 // HACK ALERT: temporary hack to work around b/10491283. 3258 // TODO: once b/10491283 fixed, remove this hack 3259 return getLocationModeForUser(cr, userHandle); 3260 } 3261 String v = getStringForUser(cr, name, userHandle); 3262 try { 3263 return Integer.parseInt(v); 3264 } catch (NumberFormatException e) { 3265 throw new SettingNotFoundException(name); 3266 } 3267 } 3268 3269 /** 3270 * Convenience function for updating a single settings value as an 3271 * integer. This will either create a new entry in the table if the 3272 * given name does not exist, or modify the value of the existing row 3273 * with that name. Note that internally setting values are always 3274 * stored as strings, so this function converts the given value to a 3275 * string before storing it. 3276 * 3277 * @param cr The ContentResolver to access. 3278 * @param name The name of the setting to modify. 3279 * @param value The new value for the setting. 3280 * @return true if the value was set, false on database errors 3281 */ putInt(ContentResolver cr, String name, int value)3282 public static boolean putInt(ContentResolver cr, String name, int value) { 3283 return putIntForUser(cr, name, value, UserHandle.myUserId()); 3284 } 3285 3286 /** @hide */ putIntForUser(ContentResolver cr, String name, int value, int userHandle)3287 public static boolean putIntForUser(ContentResolver cr, String name, int value, 3288 int userHandle) { 3289 return putStringForUser(cr, name, Integer.toString(value), userHandle); 3290 } 3291 3292 /** 3293 * Convenience function for retrieving a single secure settings value 3294 * as a {@code long}. Note that internally setting values are always 3295 * stored as strings; this function converts the string to a {@code long} 3296 * for you. The default value will be returned if the setting is 3297 * not defined or not a {@code long}. 3298 * 3299 * @param cr The ContentResolver to access. 3300 * @param name The name of the setting to retrieve. 3301 * @param def Value to return if the setting is not defined. 3302 * 3303 * @return The setting's current value, or 'def' if it is not defined 3304 * or not a valid {@code long}. 3305 */ getLong(ContentResolver cr, String name, long def)3306 public static long getLong(ContentResolver cr, String name, long def) { 3307 return getLongForUser(cr, name, def, UserHandle.myUserId()); 3308 } 3309 3310 /** @hide */ getLongForUser(ContentResolver cr, String name, long def, int userHandle)3311 public static long getLongForUser(ContentResolver cr, String name, long def, 3312 int userHandle) { 3313 String valString = getStringForUser(cr, name, userHandle); 3314 long value; 3315 try { 3316 value = valString != null ? Long.parseLong(valString) : def; 3317 } catch (NumberFormatException e) { 3318 value = def; 3319 } 3320 return value; 3321 } 3322 3323 /** 3324 * Convenience function for retrieving a single secure settings value 3325 * as a {@code long}. Note that internally setting values are always 3326 * stored as strings; this function converts the string to a {@code long} 3327 * for you. 3328 * <p> 3329 * This version does not take a default value. If the setting has not 3330 * been set, or the string value is not a number, 3331 * it throws {@link SettingNotFoundException}. 3332 * 3333 * @param cr The ContentResolver to access. 3334 * @param name The name of the setting to retrieve. 3335 * 3336 * @return The setting's current value. 3337 * @throws SettingNotFoundException Thrown if a setting by the given 3338 * name can't be found or the setting value is not an integer. 3339 */ getLong(ContentResolver cr, String name)3340 public static long getLong(ContentResolver cr, String name) 3341 throws SettingNotFoundException { 3342 return getLongForUser(cr, name, UserHandle.myUserId()); 3343 } 3344 3345 /** @hide */ getLongForUser(ContentResolver cr, String name, int userHandle)3346 public static long getLongForUser(ContentResolver cr, String name, int userHandle) 3347 throws SettingNotFoundException { 3348 String valString = getStringForUser(cr, name, userHandle); 3349 try { 3350 return Long.parseLong(valString); 3351 } catch (NumberFormatException e) { 3352 throw new SettingNotFoundException(name); 3353 } 3354 } 3355 3356 /** 3357 * Convenience function for updating a secure settings value as a long 3358 * integer. This will either create a new entry in the table if the 3359 * given name does not exist, or modify the value of the existing row 3360 * with that name. Note that internally setting values are always 3361 * stored as strings, so this function converts the given value to a 3362 * string before storing it. 3363 * 3364 * @param cr The ContentResolver to access. 3365 * @param name The name of the setting to modify. 3366 * @param value The new value for the setting. 3367 * @return true if the value was set, false on database errors 3368 */ putLong(ContentResolver cr, String name, long value)3369 public static boolean putLong(ContentResolver cr, String name, long value) { 3370 return putLongForUser(cr, name, value, UserHandle.myUserId()); 3371 } 3372 3373 /** @hide */ putLongForUser(ContentResolver cr, String name, long value, int userHandle)3374 public static boolean putLongForUser(ContentResolver cr, String name, long value, 3375 int userHandle) { 3376 return putStringForUser(cr, name, Long.toString(value), userHandle); 3377 } 3378 3379 /** 3380 * Convenience function for retrieving a single secure settings value 3381 * as a floating point number. Note that internally setting values are 3382 * always stored as strings; this function converts the string to an 3383 * float for you. The default value will be returned if the setting 3384 * is not defined or not a valid float. 3385 * 3386 * @param cr The ContentResolver to access. 3387 * @param name The name of the setting to retrieve. 3388 * @param def Value to return if the setting is not defined. 3389 * 3390 * @return The setting's current value, or 'def' if it is not defined 3391 * or not a valid float. 3392 */ getFloat(ContentResolver cr, String name, float def)3393 public static float getFloat(ContentResolver cr, String name, float def) { 3394 return getFloatForUser(cr, name, def, UserHandle.myUserId()); 3395 } 3396 3397 /** @hide */ getFloatForUser(ContentResolver cr, String name, float def, int userHandle)3398 public static float getFloatForUser(ContentResolver cr, String name, float def, 3399 int userHandle) { 3400 String v = getStringForUser(cr, name, userHandle); 3401 try { 3402 return v != null ? Float.parseFloat(v) : def; 3403 } catch (NumberFormatException e) { 3404 return def; 3405 } 3406 } 3407 3408 /** 3409 * Convenience function for retrieving a single secure settings value 3410 * as a float. Note that internally setting values are always 3411 * stored as strings; this function converts the string to a float 3412 * for you. 3413 * <p> 3414 * This version does not take a default value. If the setting has not 3415 * been set, or the string value is not a number, 3416 * it throws {@link SettingNotFoundException}. 3417 * 3418 * @param cr The ContentResolver to access. 3419 * @param name The name of the setting to retrieve. 3420 * 3421 * @throws SettingNotFoundException Thrown if a setting by the given 3422 * name can't be found or the setting value is not a float. 3423 * 3424 * @return The setting's current value. 3425 */ getFloat(ContentResolver cr, String name)3426 public static float getFloat(ContentResolver cr, String name) 3427 throws SettingNotFoundException { 3428 return getFloatForUser(cr, name, UserHandle.myUserId()); 3429 } 3430 3431 /** @hide */ getFloatForUser(ContentResolver cr, String name, int userHandle)3432 public static float getFloatForUser(ContentResolver cr, String name, int userHandle) 3433 throws SettingNotFoundException { 3434 String v = getStringForUser(cr, name, userHandle); 3435 if (v == null) { 3436 throw new SettingNotFoundException(name); 3437 } 3438 try { 3439 return Float.parseFloat(v); 3440 } catch (NumberFormatException e) { 3441 throw new SettingNotFoundException(name); 3442 } 3443 } 3444 3445 /** 3446 * Convenience function for updating a single settings value as a 3447 * floating point number. This will either create a new entry in the 3448 * table if the given name does not exist, or modify the value of the 3449 * existing row with that name. Note that internally setting values 3450 * are always stored as strings, so this function converts the given 3451 * value to a string before storing it. 3452 * 3453 * @param cr The ContentResolver to access. 3454 * @param name The name of the setting to modify. 3455 * @param value The new value for the setting. 3456 * @return true if the value was set, false on database errors 3457 */ putFloat(ContentResolver cr, String name, float value)3458 public static boolean putFloat(ContentResolver cr, String name, float value) { 3459 return putFloatForUser(cr, name, value, UserHandle.myUserId()); 3460 } 3461 3462 /** @hide */ putFloatForUser(ContentResolver cr, String name, float value, int userHandle)3463 public static boolean putFloatForUser(ContentResolver cr, String name, float value, 3464 int userHandle) { 3465 return putStringForUser(cr, name, Float.toString(value), userHandle); 3466 } 3467 3468 /** 3469 * @deprecated Use {@link android.provider.Settings.Global#DEVELOPMENT_SETTINGS_ENABLED} 3470 * instead 3471 */ 3472 @Deprecated 3473 public static final String DEVELOPMENT_SETTINGS_ENABLED = 3474 Global.DEVELOPMENT_SETTINGS_ENABLED; 3475 3476 /** 3477 * When the user has enable the option to have a "bug report" command 3478 * in the power menu. 3479 * @deprecated Use {@link android.provider.Settings.Global#BUGREPORT_IN_POWER_MENU} instead 3480 * @hide 3481 */ 3482 @Deprecated 3483 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu"; 3484 3485 /** 3486 * @deprecated Use {@link android.provider.Settings.Global#ADB_ENABLED} instead 3487 */ 3488 @Deprecated 3489 public static final String ADB_ENABLED = Global.ADB_ENABLED; 3490 3491 /** 3492 * Setting to allow mock locations and location provider status to be injected into the 3493 * LocationManager service for testing purposes during application development. These 3494 * locations and status values override actual location and status information generated 3495 * by network, gps, or other location providers. 3496 */ 3497 public static final String ALLOW_MOCK_LOCATION = "mock_location"; 3498 3499 /** 3500 * A 64-bit number (as a hex string) that is randomly 3501 * generated when the user first sets up the device and should remain 3502 * constant for the lifetime of the user's device. The value may 3503 * change if a factory reset is performed on the device. 3504 * <p class="note"><strong>Note:</strong> When a device has <a 3505 * href="{@docRoot}about/versions/android-4.2.html#MultipleUsers">multiple users</a> 3506 * (available on certain devices running Android 4.2 or higher), each user appears as a 3507 * completely separate device, so the {@code ANDROID_ID} value is unique to each 3508 * user.</p> 3509 */ 3510 public static final String ANDROID_ID = "android_id"; 3511 3512 /** 3513 * @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead 3514 */ 3515 @Deprecated 3516 public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON; 3517 3518 /** 3519 * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead 3520 */ 3521 @Deprecated 3522 public static final String DATA_ROAMING = Global.DATA_ROAMING; 3523 3524 /** 3525 * Setting to record the input method used by default, holding the ID 3526 * of the desired method. 3527 */ 3528 public static final String DEFAULT_INPUT_METHOD = "default_input_method"; 3529 3530 /** 3531 * Setting to record the input method subtype used by default, holding the ID 3532 * of the desired method. 3533 */ 3534 public static final String SELECTED_INPUT_METHOD_SUBTYPE = 3535 "selected_input_method_subtype"; 3536 3537 /** 3538 * Setting to record the history of input method subtype, holding the pair of ID of IME 3539 * and its last used subtype. 3540 * @hide 3541 */ 3542 public static final String INPUT_METHODS_SUBTYPE_HISTORY = 3543 "input_methods_subtype_history"; 3544 3545 /** 3546 * Setting to record the visibility of input method selector 3547 */ 3548 public static final String INPUT_METHOD_SELECTOR_VISIBILITY = 3549 "input_method_selector_visibility"; 3550 3551 /** 3552 * The currently selected voice interaction service flattened ComponentName. 3553 * @hide 3554 */ 3555 public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service"; 3556 3557 /** 3558 * bluetooth HCI snoop log configuration 3559 * @hide 3560 */ 3561 public static final String BLUETOOTH_HCI_LOG = 3562 "bluetooth_hci_log"; 3563 3564 /** 3565 * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead 3566 */ 3567 @Deprecated 3568 public static final String DEVICE_PROVISIONED = Global.DEVICE_PROVISIONED; 3569 3570 /** 3571 * Whether the current user has been set up via setup wizard (0 = false, 1 = true) 3572 * @hide 3573 */ 3574 public static final String USER_SETUP_COMPLETE = "user_setup_complete"; 3575 3576 /** 3577 * List of input methods that are currently enabled. This is a string 3578 * containing the IDs of all enabled input methods, each ID separated 3579 * by ':'. 3580 */ 3581 public static final String ENABLED_INPUT_METHODS = "enabled_input_methods"; 3582 3583 /** 3584 * List of system input methods that are currently disabled. This is a string 3585 * containing the IDs of all disabled input methods, each ID separated 3586 * by ':'. 3587 * @hide 3588 */ 3589 public static final String DISABLED_SYSTEM_INPUT_METHODS = "disabled_system_input_methods"; 3590 3591 /** 3592 * Whether to show the IME when a hard keyboard is connected. This is a boolean that 3593 * determines if the IME should be shown when a hard keyboard is attached. 3594 * @hide 3595 */ 3596 public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard"; 3597 3598 /** 3599 * Host name and port for global http proxy. Uses ':' seperator for 3600 * between host and port. 3601 * 3602 * @deprecated Use {@link Global#HTTP_PROXY} 3603 */ 3604 @Deprecated 3605 public static final String HTTP_PROXY = Global.HTTP_PROXY; 3606 3607 /** 3608 * Whether applications can be installed for this user via the system's 3609 * {@link Intent#ACTION_INSTALL_PACKAGE} mechanism. 3610 * 3611 * <p>1 = permit app installation via the system package installer intent 3612 * <p>0 = do not allow use of the package installer 3613 */ 3614 public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; 3615 3616 /** 3617 * Comma-separated list of location providers that activities may access. Do not rely on 3618 * this value being present in settings.db or on ContentObserver notifications on the 3619 * corresponding Uri. 3620 * 3621 * @deprecated use {@link #LOCATION_MODE} and 3622 * {@link LocationManager#MODE_CHANGED_ACTION} (or 3623 * {@link LocationManager#PROVIDERS_CHANGED_ACTION}) 3624 */ 3625 @Deprecated 3626 public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed"; 3627 3628 /** 3629 * The degree of location access enabled by the user. 3630 * <p> 3631 * When used with {@link #putInt(ContentResolver, String, int)}, must be one of {@link 3632 * #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, {@link 3633 * #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. When used with {@link 3634 * #getInt(ContentResolver, String)}, the caller must gracefully handle additional location 3635 * modes that might be added in the future. 3636 * <p> 3637 * Note: do not rely on this value being present in settings.db or on ContentObserver 3638 * notifications for the corresponding Uri. Use {@link LocationManager#MODE_CHANGED_ACTION} 3639 * to receive changes in this value. 3640 */ 3641 public static final String LOCATION_MODE = "location_mode"; 3642 3643 /** 3644 * Location access disabled. 3645 */ 3646 public static final int LOCATION_MODE_OFF = 0; 3647 /** 3648 * Network Location Provider disabled, but GPS and other sensors enabled. 3649 */ 3650 public static final int LOCATION_MODE_SENSORS_ONLY = 1; 3651 /** 3652 * Reduced power usage, such as limiting the number of GPS updates per hour. Requests 3653 * with {@link android.location.Criteria#POWER_HIGH} may be downgraded to 3654 * {@link android.location.Criteria#POWER_MEDIUM}. 3655 */ 3656 public static final int LOCATION_MODE_BATTERY_SAVING = 2; 3657 /** 3658 * Best-effort location computation allowed. 3659 */ 3660 public static final int LOCATION_MODE_HIGH_ACCURACY = 3; 3661 3662 /** 3663 * A flag containing settings used for biometric weak 3664 * @hide 3665 */ 3666 public static final String LOCK_BIOMETRIC_WEAK_FLAGS = 3667 "lock_biometric_weak_flags"; 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 * Whether background data usage is allowed. 4353 * 4354 * @deprecated As of {@link VERSION_CODES#ICE_CREAM_SANDWICH}, 4355 * availability of background data depends on several 4356 * combined factors. When background data is unavailable, 4357 * {@link ConnectivityManager#getActiveNetworkInfo()} will 4358 * now appear disconnected. 4359 */ 4360 @Deprecated 4361 public static final String BACKGROUND_DATA = "background_data"; 4362 4363 /** 4364 * Origins for which browsers should allow geolocation by default. 4365 * The value is a space-separated list of origins. 4366 */ 4367 public static final String ALLOWED_GEOLOCATION_ORIGINS 4368 = "allowed_geolocation_origins"; 4369 4370 /** 4371 * The preferred TTY mode 0 = TTy Off, CDMA default 4372 * 1 = TTY Full 4373 * 2 = TTY HCO 4374 * 3 = TTY VCO 4375 * @hide 4376 */ 4377 public static final String PREFERRED_TTY_MODE = 4378 "preferred_tty_mode"; 4379 4380 /** 4381 * Whether the enhanced voice privacy mode is enabled. 4382 * 0 = normal voice privacy 4383 * 1 = enhanced voice privacy 4384 * @hide 4385 */ 4386 public static final String ENHANCED_VOICE_PRIVACY_ENABLED = "enhanced_voice_privacy_enabled"; 4387 4388 /** 4389 * Whether the TTY mode mode is enabled. 4390 * 0 = disabled 4391 * 1 = enabled 4392 * @hide 4393 */ 4394 public static final String TTY_MODE_ENABLED = "tty_mode_enabled"; 4395 4396 /** 4397 * Controls whether settings backup is enabled. 4398 * Type: int ( 0 = disabled, 1 = enabled ) 4399 * @hide 4400 */ 4401 public static final String BACKUP_ENABLED = "backup_enabled"; 4402 4403 /** 4404 * Controls whether application data is automatically restored from backup 4405 * at install time. 4406 * Type: int ( 0 = disabled, 1 = enabled ) 4407 * @hide 4408 */ 4409 public static final String BACKUP_AUTO_RESTORE = "backup_auto_restore"; 4410 4411 /** 4412 * Indicates whether settings backup has been fully provisioned. 4413 * Type: int ( 0 = unprovisioned, 1 = fully provisioned ) 4414 * @hide 4415 */ 4416 public static final String BACKUP_PROVISIONED = "backup_provisioned"; 4417 4418 /** 4419 * Component of the transport to use for backup/restore. 4420 * @hide 4421 */ 4422 public static final String BACKUP_TRANSPORT = "backup_transport"; 4423 4424 /** 4425 * Version for which the setup wizard was last shown. Bumped for 4426 * each release when there is new setup information to show. 4427 * @hide 4428 */ 4429 public static final String LAST_SETUP_SHOWN = "last_setup_shown"; 4430 4431 /** 4432 * The interval in milliseconds after which Wi-Fi is considered idle. 4433 * When idle, it is possible for the device to be switched from Wi-Fi to 4434 * the mobile data network. 4435 * @hide 4436 * @deprecated Use {@link android.provider.Settings.Global#WIFI_IDLE_MS} 4437 * instead. 4438 */ 4439 @Deprecated 4440 public static final String WIFI_IDLE_MS = Global.WIFI_IDLE_MS; 4441 4442 /** 4443 * The global search provider chosen by the user (if multiple global 4444 * search providers are installed). This will be the provider returned 4445 * by {@link SearchManager#getGlobalSearchActivity()} if it's still 4446 * installed. This setting is stored as a flattened component name as 4447 * per {@link ComponentName#flattenToString()}. 4448 * 4449 * @hide 4450 */ 4451 public static final String SEARCH_GLOBAL_SEARCH_ACTIVITY = 4452 "search_global_search_activity"; 4453 4454 /** 4455 * The number of promoted sources in GlobalSearch. 4456 * @hide 4457 */ 4458 public static final String SEARCH_NUM_PROMOTED_SOURCES = "search_num_promoted_sources"; 4459 /** 4460 * The maximum number of suggestions returned by GlobalSearch. 4461 * @hide 4462 */ 4463 public static final String SEARCH_MAX_RESULTS_TO_DISPLAY = "search_max_results_to_display"; 4464 /** 4465 * The number of suggestions GlobalSearch will ask each non-web search source for. 4466 * @hide 4467 */ 4468 public static final String SEARCH_MAX_RESULTS_PER_SOURCE = "search_max_results_per_source"; 4469 /** 4470 * The number of suggestions the GlobalSearch will ask the web search source for. 4471 * @hide 4472 */ 4473 public static final String SEARCH_WEB_RESULTS_OVERRIDE_LIMIT = 4474 "search_web_results_override_limit"; 4475 /** 4476 * The number of milliseconds that GlobalSearch will wait for suggestions from 4477 * promoted sources before continuing with all other sources. 4478 * @hide 4479 */ 4480 public static final String SEARCH_PROMOTED_SOURCE_DEADLINE_MILLIS = 4481 "search_promoted_source_deadline_millis"; 4482 /** 4483 * The number of milliseconds before GlobalSearch aborts search suggesiton queries. 4484 * @hide 4485 */ 4486 public static final String SEARCH_SOURCE_TIMEOUT_MILLIS = "search_source_timeout_millis"; 4487 /** 4488 * The maximum number of milliseconds that GlobalSearch shows the previous results 4489 * after receiving a new query. 4490 * @hide 4491 */ 4492 public static final String SEARCH_PREFILL_MILLIS = "search_prefill_millis"; 4493 /** 4494 * The maximum age of log data used for shortcuts in GlobalSearch. 4495 * @hide 4496 */ 4497 public static final String SEARCH_MAX_STAT_AGE_MILLIS = "search_max_stat_age_millis"; 4498 /** 4499 * The maximum age of log data used for source ranking in GlobalSearch. 4500 * @hide 4501 */ 4502 public static final String SEARCH_MAX_SOURCE_EVENT_AGE_MILLIS = 4503 "search_max_source_event_age_millis"; 4504 /** 4505 * The minimum number of impressions needed to rank a source in GlobalSearch. 4506 * @hide 4507 */ 4508 public static final String SEARCH_MIN_IMPRESSIONS_FOR_SOURCE_RANKING = 4509 "search_min_impressions_for_source_ranking"; 4510 /** 4511 * The minimum number of clicks needed to rank a source in GlobalSearch. 4512 * @hide 4513 */ 4514 public static final String SEARCH_MIN_CLICKS_FOR_SOURCE_RANKING = 4515 "search_min_clicks_for_source_ranking"; 4516 /** 4517 * The maximum number of shortcuts shown by GlobalSearch. 4518 * @hide 4519 */ 4520 public static final String SEARCH_MAX_SHORTCUTS_RETURNED = "search_max_shortcuts_returned"; 4521 /** 4522 * The size of the core thread pool for suggestion queries in GlobalSearch. 4523 * @hide 4524 */ 4525 public static final String SEARCH_QUERY_THREAD_CORE_POOL_SIZE = 4526 "search_query_thread_core_pool_size"; 4527 /** 4528 * The maximum size of the thread pool for suggestion queries in GlobalSearch. 4529 * @hide 4530 */ 4531 public static final String SEARCH_QUERY_THREAD_MAX_POOL_SIZE = 4532 "search_query_thread_max_pool_size"; 4533 /** 4534 * The size of the core thread pool for shortcut refreshing in GlobalSearch. 4535 * @hide 4536 */ 4537 public static final String SEARCH_SHORTCUT_REFRESH_CORE_POOL_SIZE = 4538 "search_shortcut_refresh_core_pool_size"; 4539 /** 4540 * The maximum size of the thread pool for shortcut refreshing in GlobalSearch. 4541 * @hide 4542 */ 4543 public static final String SEARCH_SHORTCUT_REFRESH_MAX_POOL_SIZE = 4544 "search_shortcut_refresh_max_pool_size"; 4545 /** 4546 * The maximun time that excess threads in the GlobalSeach thread pools will 4547 * wait before terminating. 4548 * @hide 4549 */ 4550 public static final String SEARCH_THREAD_KEEPALIVE_SECONDS = 4551 "search_thread_keepalive_seconds"; 4552 /** 4553 * The maximum number of concurrent suggestion queries to each source. 4554 * @hide 4555 */ 4556 public static final String SEARCH_PER_SOURCE_CONCURRENT_QUERY_LIMIT = 4557 "search_per_source_concurrent_query_limit"; 4558 4559 /** 4560 * Whether or not alert sounds are played on MountService events. (0 = false, 1 = true) 4561 * @hide 4562 */ 4563 public static final String MOUNT_PLAY_NOTIFICATION_SND = "mount_play_not_snd"; 4564 4565 /** 4566 * Whether or not UMS auto-starts on UMS host detection. (0 = false, 1 = true) 4567 * @hide 4568 */ 4569 public static final String MOUNT_UMS_AUTOSTART = "mount_ums_autostart"; 4570 4571 /** 4572 * Whether or not a notification is displayed on UMS host detection. (0 = false, 1 = true) 4573 * @hide 4574 */ 4575 public static final String MOUNT_UMS_PROMPT = "mount_ums_prompt"; 4576 4577 /** 4578 * Whether or not a notification is displayed while UMS is enabled. (0 = false, 1 = true) 4579 * @hide 4580 */ 4581 public static final String MOUNT_UMS_NOTIFY_ENABLED = "mount_ums_notify_enabled"; 4582 4583 /** 4584 * If nonzero, ANRs in invisible background processes bring up a dialog. 4585 * Otherwise, the process will be silently killed. 4586 * @hide 4587 */ 4588 public static final String ANR_SHOW_BACKGROUND = "anr_show_background"; 4589 4590 /** 4591 * (Experimental). If nonzero, WebView uses data reduction proxy to save network 4592 * bandwidth. Otherwise, WebView does not use data reduction proxy. 4593 * @hide 4594 */ 4595 public static final String WEBVIEW_DATA_REDUCTION_PROXY = "webview_data_reduction_proxy"; 4596 4597 /** 4598 * The {@link ComponentName} string of the service to be used as the voice recognition 4599 * service. 4600 * 4601 * @hide 4602 */ 4603 public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service"; 4604 4605 /** 4606 * Stores whether an user has consented to have apps verified through PAM. 4607 * The value is boolean (1 or 0). 4608 * 4609 * @hide 4610 */ 4611 public static final String PACKAGE_VERIFIER_USER_CONSENT = 4612 "package_verifier_user_consent"; 4613 4614 /** 4615 * The {@link ComponentName} string of the selected spell checker service which is 4616 * one of the services managed by the text service manager. 4617 * 4618 * @hide 4619 */ 4620 public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker"; 4621 4622 /** 4623 * The {@link ComponentName} string of the selected subtype of the selected spell checker 4624 * service which is one of the services managed by the text service manager. 4625 * 4626 * @hide 4627 */ 4628 public static final String SELECTED_SPELL_CHECKER_SUBTYPE = 4629 "selected_spell_checker_subtype"; 4630 4631 /** 4632 * The {@link ComponentName} string whether spell checker is enabled or not. 4633 * 4634 * @hide 4635 */ 4636 public static final String SPELL_CHECKER_ENABLED = "spell_checker_enabled"; 4637 4638 /** 4639 * What happens when the user presses the Power button while in-call 4640 * and the screen is on.<br/> 4641 * <b>Values:</b><br/> 4642 * 1 - The Power button turns off the screen and locks the device. (Default behavior)<br/> 4643 * 2 - The Power button hangs up the current call.<br/> 4644 * 4645 * @hide 4646 */ 4647 public static final String INCALL_POWER_BUTTON_BEHAVIOR = "incall_power_button_behavior"; 4648 4649 /** 4650 * INCALL_POWER_BUTTON_BEHAVIOR value for "turn off screen". 4651 * @hide 4652 */ 4653 public static final int INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF = 0x1; 4654 4655 /** 4656 * INCALL_POWER_BUTTON_BEHAVIOR value for "hang up". 4657 * @hide 4658 */ 4659 public static final int INCALL_POWER_BUTTON_BEHAVIOR_HANGUP = 0x2; 4660 4661 /** 4662 * INCALL_POWER_BUTTON_BEHAVIOR default value. 4663 * @hide 4664 */ 4665 public static final int INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT = 4666 INCALL_POWER_BUTTON_BEHAVIOR_SCREEN_OFF; 4667 4668 /** 4669 * Whether the device should wake when the wake gesture sensor detects motion. 4670 * @hide 4671 */ 4672 public static final String WAKE_GESTURE_ENABLED = "wake_gesture_enabled"; 4673 4674 /** 4675 * Whether the device should doze if configured. 4676 * @hide 4677 */ 4678 public static final String DOZE_ENABLED = "doze_enabled"; 4679 4680 /** 4681 * The current night mode that has been selected by the user. Owned 4682 * and controlled by UiModeManagerService. Constants are as per 4683 * UiModeManager. 4684 * @hide 4685 */ 4686 public static final String UI_NIGHT_MODE = "ui_night_mode"; 4687 4688 /** 4689 * Whether screensavers are enabled. 4690 * @hide 4691 */ 4692 public static final String SCREENSAVER_ENABLED = "screensaver_enabled"; 4693 4694 /** 4695 * The user's chosen screensaver components. 4696 * 4697 * These will be launched by the PhoneWindowManager after a timeout when not on 4698 * battery, or upon dock insertion (if SCREENSAVER_ACTIVATE_ON_DOCK is set to 1). 4699 * @hide 4700 */ 4701 public static final String SCREENSAVER_COMPONENTS = "screensaver_components"; 4702 4703 /** 4704 * If screensavers are enabled, whether the screensaver should be automatically launched 4705 * when the device is inserted into a (desk) dock. 4706 * @hide 4707 */ 4708 public static final String SCREENSAVER_ACTIVATE_ON_DOCK = "screensaver_activate_on_dock"; 4709 4710 /** 4711 * If screensavers are enabled, whether the screensaver should be automatically launched 4712 * when the screen times out when not on battery. 4713 * @hide 4714 */ 4715 public static final String SCREENSAVER_ACTIVATE_ON_SLEEP = "screensaver_activate_on_sleep"; 4716 4717 /** 4718 * If screensavers are enabled, the default screensaver component. 4719 * @hide 4720 */ 4721 public static final String SCREENSAVER_DEFAULT_COMPONENT = "screensaver_default_component"; 4722 4723 /** 4724 * The default NFC payment component 4725 * @hide 4726 */ 4727 public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component"; 4728 4729 /** 4730 * Whether NFC payment is handled by the foreground application or a default. 4731 * @hide 4732 */ 4733 public static final String NFC_PAYMENT_FOREGROUND = "nfc_payment_foreground"; 4734 4735 /** 4736 * Specifies the package name currently configured to be the primary sms application 4737 * @hide 4738 */ 4739 public static final String SMS_DEFAULT_APPLICATION = "sms_default_application"; 4740 4741 /** 4742 * Name of a package that the current user has explicitly allowed to see all of that 4743 * user's notifications. 4744 * 4745 * @hide 4746 */ 4747 public static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners"; 4748 4749 /** 4750 * @hide 4751 */ 4752 public static final String ENABLED_CONDITION_PROVIDERS = "enabled_condition_providers"; 4753 4754 /** @hide */ 4755 public static final String BAR_SERVICE_COMPONENT = "bar_service_component"; 4756 4757 /** @hide */ 4758 public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations"; 4759 4760 /** 4761 * This is the query URI for finding a print service to install. 4762 * 4763 * @hide 4764 */ 4765 public static final String PRINT_SERVICE_SEARCH_URI = "print_service_search_uri"; 4766 4767 /** 4768 * This is the query URI for finding a NFC payment service to install. 4769 * 4770 * @hide 4771 */ 4772 public static final String PAYMENT_SERVICE_SEARCH_URI = "payment_service_search_uri"; 4773 4774 /** 4775 * If enabled, apps should try to skip any introductory hints on first launch. This might 4776 * apply to users that are already familiar with the environment or temporary users. 4777 * <p> 4778 * Type : int (0 to show hints, 1 to skip showing hints) 4779 */ 4780 public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints"; 4781 4782 /** 4783 * Persisted playback time after a user confirmation of an unsafe volume level. 4784 * 4785 * @hide 4786 */ 4787 public static final String UNSAFE_VOLUME_MUSIC_ACTIVE_MS = "unsafe_volume_music_active_ms"; 4788 4789 /** 4790 * This preference enables notification display on the lockscreen. 4791 * @hide 4792 */ 4793 public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = 4794 "lock_screen_show_notifications"; 4795 4796 /** 4797 * List of TV inputs that are currently hidden. This is a string 4798 * containing the IDs of all hidden TV inputs. Each ID is encoded by 4799 * {@link android.net.Uri#encode(String)} and separated by ':'. 4800 * @hide 4801 */ 4802 public static final String TV_INPUT_HIDDEN_INPUTS = "tv_input_hidden_inputs"; 4803 4804 /** 4805 * List of custom TV input labels. This is a string containing <TV input id, custom name> 4806 * pairs. TV input id and custom name are encoded by {@link android.net.Uri#encode(String)} 4807 * and separated by ','. Each pair is separated by ':'. 4808 * @hide 4809 */ 4810 public static final String TV_INPUT_CUSTOM_LABELS = "tv_input_custom_labels"; 4811 4812 /** 4813 * Whether automatic routing of system audio to USB audio peripheral is disabled. 4814 * The value is boolean (1 or 0), where 1 means automatic routing is disabled, 4815 * and 0 means automatic routing is enabled. 4816 * 4817 * @hide 4818 */ 4819 public static final String USB_AUDIO_AUTOMATIC_ROUTING_DISABLED = 4820 "usb_audio_automatic_routing_disabled"; 4821 4822 /** 4823 * The timeout in milliseconds before the device fully goes to sleep after 4824 * a period of inactivity. This value sets an upper bound on how long the device 4825 * will stay awake or dreaming without user activity. It should generally 4826 * be longer than {@link #SCREEN_OFF_TIMEOUT} as otherwise the device 4827 * will sleep before it ever has a chance to dream. 4828 * <p> 4829 * Use -1 to disable this timeout. 4830 * </p> 4831 * 4832 * @hide 4833 */ 4834 public static final String SLEEP_TIMEOUT = "sleep_timeout"; 4835 4836 /** 4837 * This are the settings to be backed up. 4838 * 4839 * NOTE: Settings are backed up and restored in the order they appear 4840 * in this array. If you have one setting depending on another, 4841 * make sure that they are ordered appropriately. 4842 * 4843 * @hide 4844 */ 4845 public static final String[] SETTINGS_TO_BACKUP = { 4846 BUGREPORT_IN_POWER_MENU, // moved to global 4847 ALLOW_MOCK_LOCATION, 4848 PARENTAL_CONTROL_ENABLED, 4849 PARENTAL_CONTROL_REDIRECT_URL, 4850 USB_MASS_STORAGE_ENABLED, // moved to global 4851 ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 4852 ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 4853 ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, 4854 ACCESSIBILITY_SCRIPT_INJECTION, 4855 BACKUP_AUTO_RESTORE, 4856 ENABLED_ACCESSIBILITY_SERVICES, 4857 TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, 4858 TOUCH_EXPLORATION_ENABLED, 4859 ACCESSIBILITY_ENABLED, 4860 ACCESSIBILITY_SPEAK_PASSWORD, 4861 ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, 4862 ACCESSIBILITY_CAPTIONING_ENABLED, 4863 ACCESSIBILITY_CAPTIONING_LOCALE, 4864 ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR, 4865 ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR, 4866 ACCESSIBILITY_CAPTIONING_EDGE_TYPE, 4867 ACCESSIBILITY_CAPTIONING_EDGE_COLOR, 4868 ACCESSIBILITY_CAPTIONING_TYPEFACE, 4869 ACCESSIBILITY_CAPTIONING_FONT_SCALE, 4870 TTS_USE_DEFAULTS, 4871 TTS_DEFAULT_RATE, 4872 TTS_DEFAULT_PITCH, 4873 TTS_DEFAULT_SYNTH, 4874 TTS_DEFAULT_LANG, 4875 TTS_DEFAULT_COUNTRY, 4876 TTS_ENABLED_PLUGINS, 4877 TTS_DEFAULT_LOCALE, 4878 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, // moved to global 4879 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, // moved to global 4880 WIFI_NUM_OPEN_NETWORKS_KEPT, // moved to global 4881 MOUNT_PLAY_NOTIFICATION_SND, 4882 MOUNT_UMS_AUTOSTART, 4883 MOUNT_UMS_PROMPT, 4884 MOUNT_UMS_NOTIFY_ENABLED, 4885 UI_NIGHT_MODE, 4886 SLEEP_TIMEOUT 4887 }; 4888 4889 /** 4890 * These entries are considered common between the personal and the managed profile, 4891 * since the managed profile doesn't get to change them. 4892 * @hide 4893 */ 4894 public static final String[] CLONE_TO_MANAGED_PROFILE = { 4895 ACCESSIBILITY_ENABLED, 4896 ALLOW_MOCK_LOCATION, 4897 ALLOWED_GEOLOCATION_ORIGINS, 4898 DEFAULT_INPUT_METHOD, 4899 ENABLED_ACCESSIBILITY_SERVICES, 4900 ENABLED_INPUT_METHODS, 4901 LOCATION_MODE, 4902 LOCATION_PROVIDERS_ALLOWED, 4903 LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 4904 SELECTED_INPUT_METHOD_SUBTYPE, 4905 SELECTED_SPELL_CHECKER, 4906 SELECTED_SPELL_CHECKER_SUBTYPE 4907 }; 4908 4909 /** 4910 * Helper method for determining if a location provider is enabled. 4911 * 4912 * @param cr the content resolver to use 4913 * @param provider the location provider to query 4914 * @return true if the provider is enabled 4915 * 4916 * @deprecated use {@link #LOCATION_MODE} or 4917 * {@link LocationManager#isProviderEnabled(String)} 4918 */ 4919 @Deprecated isLocationProviderEnabled(ContentResolver cr, String provider)4920 public static final boolean isLocationProviderEnabled(ContentResolver cr, String provider) { 4921 return isLocationProviderEnabledForUser(cr, provider, UserHandle.myUserId()); 4922 } 4923 4924 /** 4925 * Helper method for determining if a location provider is enabled. 4926 * @param cr the content resolver to use 4927 * @param provider the location provider to query 4928 * @param userId the userId to query 4929 * @return true if the provider is enabled 4930 * @deprecated use {@link #LOCATION_MODE} or 4931 * {@link LocationManager#isProviderEnabled(String)} 4932 * @hide 4933 */ 4934 @Deprecated isLocationProviderEnabledForUser(ContentResolver cr, String provider, int userId)4935 public static final boolean isLocationProviderEnabledForUser(ContentResolver cr, String provider, int userId) { 4936 String allowedProviders = Settings.Secure.getStringForUser(cr, 4937 LOCATION_PROVIDERS_ALLOWED, userId); 4938 return TextUtils.delimitedStringContains(allowedProviders, ',', provider); 4939 } 4940 4941 /** 4942 * Thread-safe method for enabling or disabling a single location provider. 4943 * @param cr the content resolver to use 4944 * @param provider the location provider to enable or disable 4945 * @param enabled true if the provider should be enabled 4946 * @deprecated use {@link #putInt(ContentResolver, String, int)} and {@link #LOCATION_MODE} 4947 */ 4948 @Deprecated setLocationProviderEnabled(ContentResolver cr, String provider, boolean enabled)4949 public static final void setLocationProviderEnabled(ContentResolver cr, 4950 String provider, boolean enabled) { 4951 setLocationProviderEnabledForUser(cr, provider, enabled, UserHandle.myUserId()); 4952 } 4953 4954 /** 4955 * Thread-safe method for enabling or disabling a single location provider. 4956 * 4957 * @param cr the content resolver to use 4958 * @param provider the location provider to enable or disable 4959 * @param enabled true if the provider should be enabled 4960 * @param userId the userId for which to enable/disable providers 4961 * @return true if the value was set, false on database errors 4962 * @deprecated use {@link #putIntForUser(ContentResolver, String, int, int)} and 4963 * {@link #LOCATION_MODE} 4964 * @hide 4965 */ 4966 @Deprecated setLocationProviderEnabledForUser(ContentResolver cr, String provider, boolean enabled, int userId)4967 public static final boolean setLocationProviderEnabledForUser(ContentResolver cr, 4968 String provider, boolean enabled, int userId) { 4969 synchronized (mLocationSettingsLock) { 4970 // to ensure thread safety, we write the provider name with a '+' or '-' 4971 // and let the SettingsProvider handle it rather than reading and modifying 4972 // the list of enabled providers. 4973 if (enabled) { 4974 provider = "+" + provider; 4975 } else { 4976 provider = "-" + provider; 4977 } 4978 return putStringForUser(cr, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, provider, 4979 userId); 4980 } 4981 } 4982 4983 /** 4984 * Thread-safe method for setting the location mode to one of 4985 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, 4986 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. 4987 * 4988 * @param cr the content resolver to use 4989 * @param mode such as {@link #LOCATION_MODE_HIGH_ACCURACY} 4990 * @param userId the userId for which to change mode 4991 * @return true if the value was set, false on database errors 4992 * 4993 * @throws IllegalArgumentException if mode is not one of the supported values 4994 */ setLocationModeForUser(ContentResolver cr, int mode, int userId)4995 private static final boolean setLocationModeForUser(ContentResolver cr, int mode, 4996 int userId) { 4997 synchronized (mLocationSettingsLock) { 4998 boolean gps = false; 4999 boolean network = false; 5000 switch (mode) { 5001 case LOCATION_MODE_OFF: 5002 break; 5003 case LOCATION_MODE_SENSORS_ONLY: 5004 gps = true; 5005 break; 5006 case LOCATION_MODE_BATTERY_SAVING: 5007 network = true; 5008 break; 5009 case LOCATION_MODE_HIGH_ACCURACY: 5010 gps = true; 5011 network = true; 5012 break; 5013 default: 5014 throw new IllegalArgumentException("Invalid location mode: " + mode); 5015 } 5016 boolean gpsSuccess = Settings.Secure.setLocationProviderEnabledForUser( 5017 cr, LocationManager.GPS_PROVIDER, gps, userId); 5018 boolean nlpSuccess = Settings.Secure.setLocationProviderEnabledForUser( 5019 cr, LocationManager.NETWORK_PROVIDER, network, userId); 5020 return gpsSuccess && nlpSuccess; 5021 } 5022 } 5023 5024 /** 5025 * Thread-safe method for reading the location mode, returns one of 5026 * {@link #LOCATION_MODE_HIGH_ACCURACY}, {@link #LOCATION_MODE_SENSORS_ONLY}, 5027 * {@link #LOCATION_MODE_BATTERY_SAVING}, or {@link #LOCATION_MODE_OFF}. 5028 * 5029 * @param cr the content resolver to use 5030 * @param userId the userId for which to read the mode 5031 * @return the location mode 5032 */ getLocationModeForUser(ContentResolver cr, int userId)5033 private static final int getLocationModeForUser(ContentResolver cr, int userId) { 5034 synchronized (mLocationSettingsLock) { 5035 boolean gpsEnabled = Settings.Secure.isLocationProviderEnabledForUser( 5036 cr, LocationManager.GPS_PROVIDER, userId); 5037 boolean networkEnabled = Settings.Secure.isLocationProviderEnabledForUser( 5038 cr, LocationManager.NETWORK_PROVIDER, userId); 5039 if (gpsEnabled && networkEnabled) { 5040 return LOCATION_MODE_HIGH_ACCURACY; 5041 } else if (gpsEnabled) { 5042 return LOCATION_MODE_SENSORS_ONLY; 5043 } else if (networkEnabled) { 5044 return LOCATION_MODE_BATTERY_SAVING; 5045 } else { 5046 return LOCATION_MODE_OFF; 5047 } 5048 } 5049 } 5050 } 5051 5052 /** 5053 * Global system settings, containing preferences that always apply identically 5054 * to all defined users. Applications can read these but are not allowed to write; 5055 * like the "Secure" settings, these are for preferences that the user must 5056 * explicitly modify through the system UI or specialized APIs for those values. 5057 */ 5058 public static final class Global extends NameValueTable { 5059 public static final String SYS_PROP_SETTING_VERSION = "sys.settings_global_version"; 5060 5061 /** 5062 * The content:// style URL for global secure settings items. Not public. 5063 */ 5064 public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/global"); 5065 5066 /** 5067 * Whether users are allowed to add more users or guest from lockscreen. 5068 * <p> 5069 * Type: int 5070 * @hide 5071 */ 5072 public static final String ADD_USERS_WHEN_LOCKED = "add_users_when_locked"; 5073 5074 /** 5075 * Setting whether the global gesture for enabling accessibility is enabled. 5076 * If this gesture is enabled the user will be able to perfrom it to enable 5077 * the accessibility state without visiting the settings app. 5078 * @hide 5079 */ 5080 public static final String ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED = 5081 "enable_accessibility_global_gesture_enabled"; 5082 5083 /** 5084 * Whether Airplane Mode is on. 5085 */ 5086 public static final String AIRPLANE_MODE_ON = "airplane_mode_on"; 5087 5088 /** 5089 * Constant for use in AIRPLANE_MODE_RADIOS to specify Bluetooth radio. 5090 */ 5091 public static final String RADIO_BLUETOOTH = "bluetooth"; 5092 5093 /** 5094 * Constant for use in AIRPLANE_MODE_RADIOS to specify Wi-Fi radio. 5095 */ 5096 public static final String RADIO_WIFI = "wifi"; 5097 5098 /** 5099 * {@hide} 5100 */ 5101 public static final String RADIO_WIMAX = "wimax"; 5102 /** 5103 * Constant for use in AIRPLANE_MODE_RADIOS to specify Cellular radio. 5104 */ 5105 public static final String RADIO_CELL = "cell"; 5106 5107 /** 5108 * Constant for use in AIRPLANE_MODE_RADIOS to specify NFC radio. 5109 */ 5110 public static final String RADIO_NFC = "nfc"; 5111 5112 /** 5113 * A comma separated list of radios that need to be disabled when airplane mode 5114 * is on. This overrides WIFI_ON and BLUETOOTH_ON, if Wi-Fi and bluetooth are 5115 * included in the comma separated list. 5116 */ 5117 public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios"; 5118 5119 /** 5120 * A comma separated list of radios that should to be disabled when airplane mode 5121 * is on, but can be manually reenabled by the user. For example, if RADIO_WIFI is 5122 * added to both AIRPLANE_MODE_RADIOS and AIRPLANE_MODE_TOGGLEABLE_RADIOS, then Wifi 5123 * will be turned off when entering airplane mode, but the user will be able to reenable 5124 * Wifi in the Settings app. 5125 * 5126 * {@hide} 5127 */ 5128 public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios"; 5129 5130 /** 5131 * The policy for deciding when Wi-Fi should go to sleep (which will in 5132 * turn switch to using the mobile data as an Internet connection). 5133 * <p> 5134 * Set to one of {@link #WIFI_SLEEP_POLICY_DEFAULT}, 5135 * {@link #WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED}, or 5136 * {@link #WIFI_SLEEP_POLICY_NEVER}. 5137 */ 5138 public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy"; 5139 5140 /** 5141 * Value for {@link #WIFI_SLEEP_POLICY} to use the default Wi-Fi sleep 5142 * policy, which is to sleep shortly after the turning off 5143 * according to the {@link #STAY_ON_WHILE_PLUGGED_IN} setting. 5144 */ 5145 public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; 5146 5147 /** 5148 * Value for {@link #WIFI_SLEEP_POLICY} to use the default policy when 5149 * the device is on battery, and never go to sleep when the device is 5150 * plugged in. 5151 */ 5152 public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; 5153 5154 /** 5155 * Value for {@link #WIFI_SLEEP_POLICY} to never go to sleep. 5156 */ 5157 public static final int WIFI_SLEEP_POLICY_NEVER = 2; 5158 5159 /** 5160 * Value to specify if the user prefers the date, time and time zone 5161 * to be automatically fetched from the network (NITZ). 1=yes, 0=no 5162 */ 5163 public static final String AUTO_TIME = "auto_time"; 5164 5165 /** 5166 * Value to specify if the user prefers the time zone 5167 * to be automatically fetched from the network (NITZ). 1=yes, 0=no 5168 */ 5169 public static final String AUTO_TIME_ZONE = "auto_time_zone"; 5170 5171 /** 5172 * URI for the car dock "in" event sound. 5173 * @hide 5174 */ 5175 public static final String CAR_DOCK_SOUND = "car_dock_sound"; 5176 5177 /** 5178 * URI for the car dock "out" event sound. 5179 * @hide 5180 */ 5181 public static final String CAR_UNDOCK_SOUND = "car_undock_sound"; 5182 5183 /** 5184 * URI for the desk dock "in" event sound. 5185 * @hide 5186 */ 5187 public static final String DESK_DOCK_SOUND = "desk_dock_sound"; 5188 5189 /** 5190 * URI for the desk dock "out" event sound. 5191 * @hide 5192 */ 5193 public static final String DESK_UNDOCK_SOUND = "desk_undock_sound"; 5194 5195 /** 5196 * Whether to play a sound for dock events. 5197 * @hide 5198 */ 5199 public static final String DOCK_SOUNDS_ENABLED = "dock_sounds_enabled"; 5200 5201 /** 5202 * URI for the "device locked" (keyguard shown) sound. 5203 * @hide 5204 */ 5205 public static final String LOCK_SOUND = "lock_sound"; 5206 5207 /** 5208 * URI for the "device unlocked" sound. 5209 * @hide 5210 */ 5211 public static final String UNLOCK_SOUND = "unlock_sound"; 5212 5213 /** 5214 * URI for the "device is trusted" sound, which is played when the device enters the trusted 5215 * state without unlocking. 5216 * @hide 5217 */ 5218 public static final String TRUSTED_SOUND = "trusted_sound"; 5219 5220 /** 5221 * URI for the low battery sound file. 5222 * @hide 5223 */ 5224 public static final String LOW_BATTERY_SOUND = "low_battery_sound"; 5225 5226 /** 5227 * Whether to play a sound for low-battery alerts. 5228 * @hide 5229 */ 5230 public static final String POWER_SOUNDS_ENABLED = "power_sounds_enabled"; 5231 5232 /** 5233 * URI for the "wireless charging started" sound. 5234 * @hide 5235 */ 5236 public static final String WIRELESS_CHARGING_STARTED_SOUND = 5237 "wireless_charging_started_sound"; 5238 5239 /** 5240 * Whether we keep the device on while the device is plugged in. 5241 * Supported values are: 5242 * <ul> 5243 * <li>{@code 0} to never stay on while plugged in</li> 5244 * <li>{@link BatteryManager#BATTERY_PLUGGED_AC} to stay on for AC charger</li> 5245 * <li>{@link BatteryManager#BATTERY_PLUGGED_USB} to stay on for USB charger</li> 5246 * <li>{@link BatteryManager#BATTERY_PLUGGED_WIRELESS} to stay on for wireless charger</li> 5247 * </ul> 5248 * These values can be OR-ed together. 5249 */ 5250 public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in"; 5251 5252 /** 5253 * When the user has enable the option to have a "bug report" command 5254 * in the power menu. 5255 * @hide 5256 */ 5257 public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu"; 5258 5259 /** 5260 * Whether ADB is enabled. 5261 */ 5262 public static final String ADB_ENABLED = "adb_enabled"; 5263 5264 /** 5265 * Whether Views are allowed to save their attribute data. 5266 * @hide 5267 */ 5268 public static final String DEBUG_VIEW_ATTRIBUTES = "debug_view_attributes"; 5269 5270 /** 5271 * Whether assisted GPS should be enabled or not. 5272 * @hide 5273 */ 5274 public static final String ASSISTED_GPS_ENABLED = "assisted_gps_enabled"; 5275 5276 /** 5277 * Whether bluetooth is enabled/disabled 5278 * 0=disabled. 1=enabled. 5279 */ 5280 public static final String BLUETOOTH_ON = "bluetooth_on"; 5281 5282 /** 5283 * CDMA Cell Broadcast SMS 5284 * 0 = CDMA Cell Broadcast SMS disabled 5285 * 1 = CDMA Cell Broadcast SMS enabled 5286 * @hide 5287 */ 5288 public static final String CDMA_CELL_BROADCAST_SMS = 5289 "cdma_cell_broadcast_sms"; 5290 5291 /** 5292 * The CDMA roaming mode 0 = Home Networks, CDMA default 5293 * 1 = Roaming on Affiliated networks 5294 * 2 = Roaming on any networks 5295 * @hide 5296 */ 5297 public static final String CDMA_ROAMING_MODE = "roaming_settings"; 5298 5299 /** 5300 * The CDMA subscription mode 0 = RUIM/SIM (default) 5301 * 1 = NV 5302 * @hide 5303 */ 5304 public static final String CDMA_SUBSCRIPTION_MODE = "subscription_mode"; 5305 5306 /** Inactivity timeout to track mobile data activity. 5307 * 5308 * If set to a positive integer, it indicates the inactivity timeout value in seconds to 5309 * infer the data activity of mobile network. After a period of no activity on mobile 5310 * networks with length specified by the timeout, an {@code ACTION_DATA_ACTIVITY_CHANGE} 5311 * intent is fired to indicate a transition of network status from "active" to "idle". Any 5312 * subsequent activity on mobile networks triggers the firing of {@code 5313 * ACTION_DATA_ACTIVITY_CHANGE} intent indicating transition from "idle" to "active". 5314 * 5315 * Network activity refers to transmitting or receiving data on the network interfaces. 5316 * 5317 * Tracking is disabled if set to zero or negative value. 5318 * 5319 * @hide 5320 */ 5321 public static final String DATA_ACTIVITY_TIMEOUT_MOBILE = "data_activity_timeout_mobile"; 5322 5323 /** Timeout to tracking Wifi data activity. Same as {@code DATA_ACTIVITY_TIMEOUT_MOBILE} 5324 * but for Wifi network. 5325 * @hide 5326 */ 5327 public static final String DATA_ACTIVITY_TIMEOUT_WIFI = "data_activity_timeout_wifi"; 5328 5329 /** 5330 * Whether or not data roaming is enabled. (0 = false, 1 = true) 5331 */ 5332 public static final String DATA_ROAMING = "data_roaming"; 5333 5334 /** 5335 * The value passed to a Mobile DataConnection via bringUp which defines the 5336 * number of retries to preform when setting up the initial connection. The default 5337 * value defined in DataConnectionTrackerBase#DEFAULT_MDC_INITIAL_RETRY is currently 1. 5338 * @hide 5339 */ 5340 public static final String MDC_INITIAL_MAX_RETRY = "mdc_initial_max_retry"; 5341 5342 /** 5343 * Whether user has enabled development settings. 5344 */ 5345 public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled"; 5346 5347 /** 5348 * Whether the device has been provisioned (0 = false, 1 = true) 5349 */ 5350 public static final String DEVICE_PROVISIONED = "device_provisioned"; 5351 5352 /** 5353 * The saved value for WindowManagerService.setForcedDisplayDensity(). 5354 * One integer in dpi. If unset, then use the real display density. 5355 * @hide 5356 */ 5357 public static final String DISPLAY_DENSITY_FORCED = "display_density_forced"; 5358 5359 /** 5360 * The saved value for WindowManagerService.setForcedDisplaySize(). 5361 * Two integers separated by a comma. If unset, then use the real display size. 5362 * @hide 5363 */ 5364 public static final String DISPLAY_SIZE_FORCED = "display_size_forced"; 5365 5366 /** 5367 * The maximum size, in bytes, of a download that the download manager will transfer over 5368 * a non-wifi connection. 5369 * @hide 5370 */ 5371 public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE = 5372 "download_manager_max_bytes_over_mobile"; 5373 5374 /** 5375 * The recommended maximum size, in bytes, of a download that the download manager should 5376 * transfer over a non-wifi connection. Over this size, the use will be warned, but will 5377 * have the option to start the download over the mobile connection anyway. 5378 * @hide 5379 */ 5380 public static final String DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE = 5381 "download_manager_recommended_max_bytes_over_mobile"; 5382 5383 /** 5384 * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead 5385 */ 5386 @Deprecated 5387 public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS; 5388 5389 /** 5390 * Whether HDMI control shall be enabled. If disabled, no CEC/MHL command will be 5391 * sent or processed. (0 = false, 1 = true) 5392 * @hide 5393 */ 5394 public static final String HDMI_CONTROL_ENABLED = "hdmi_control_enabled"; 5395 5396 /** 5397 * Whether HDMI system audio is enabled. If enabled, TV internal speaker is muted, 5398 * and the output is redirected to AV Receiver connected via 5399 * {@Global#HDMI_SYSTEM_AUDIO_OUTPUT}. 5400 * @hide 5401 */ 5402 public static final String HDMI_SYSTEM_AUDIO_ENABLED = "hdmi_system_audio_enabled"; 5403 5404 /** 5405 * Whether TV will automatically turn on upon reception of the CEC command 5406 * <Text View On> or <Image View On>. (0 = false, 1 = true) 5407 * @hide 5408 */ 5409 public static final String HDMI_CONTROL_AUTO_WAKEUP_ENABLED = 5410 "hdmi_control_auto_wakeup_enabled"; 5411 5412 /** 5413 * Whether TV will also turn off other CEC devices when it goes to standby mode. 5414 * (0 = false, 1 = true) 5415 * @hide 5416 */ 5417 public static final String HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED = 5418 "hdmi_control_auto_device_off_enabled"; 5419 5420 /** 5421 * Whether TV will switch to MHL port when a mobile device is plugged in. 5422 * (0 = false, 1 = true) 5423 * @hide 5424 */ 5425 public static final String MHL_INPUT_SWITCHING_ENABLED = "mhl_input_switching_enabled"; 5426 5427 /** 5428 * Whether TV will charge the mobile device connected at MHL port. (0 = false, 1 = true) 5429 * @hide 5430 */ 5431 public static final String MHL_POWER_CHARGE_ENABLED = "mhl_power_charge_enabled"; 5432 5433 /** 5434 * Whether mobile data connections are allowed by the user. See 5435 * ConnectivityManager for more info. 5436 * @hide 5437 */ 5438 public static final String MOBILE_DATA = "mobile_data"; 5439 5440 /** {@hide} */ 5441 public static final String NETSTATS_ENABLED = "netstats_enabled"; 5442 /** {@hide} */ 5443 public static final String NETSTATS_POLL_INTERVAL = "netstats_poll_interval"; 5444 /** {@hide} */ 5445 public static final String NETSTATS_TIME_CACHE_MAX_AGE = "netstats_time_cache_max_age"; 5446 /** {@hide} */ 5447 public static final String NETSTATS_GLOBAL_ALERT_BYTES = "netstats_global_alert_bytes"; 5448 /** {@hide} */ 5449 public static final String NETSTATS_SAMPLE_ENABLED = "netstats_sample_enabled"; 5450 /** {@hide} */ 5451 public static final String NETSTATS_REPORT_XT_OVER_DEV = "netstats_report_xt_over_dev"; 5452 5453 /** {@hide} */ 5454 public static final String NETSTATS_DEV_BUCKET_DURATION = "netstats_dev_bucket_duration"; 5455 /** {@hide} */ 5456 public static final String NETSTATS_DEV_PERSIST_BYTES = "netstats_dev_persist_bytes"; 5457 /** {@hide} */ 5458 public static final String NETSTATS_DEV_ROTATE_AGE = "netstats_dev_rotate_age"; 5459 /** {@hide} */ 5460 public static final String NETSTATS_DEV_DELETE_AGE = "netstats_dev_delete_age"; 5461 5462 /** {@hide} */ 5463 public static final String NETSTATS_UID_BUCKET_DURATION = "netstats_uid_bucket_duration"; 5464 /** {@hide} */ 5465 public static final String NETSTATS_UID_PERSIST_BYTES = "netstats_uid_persist_bytes"; 5466 /** {@hide} */ 5467 public static final String NETSTATS_UID_ROTATE_AGE = "netstats_uid_rotate_age"; 5468 /** {@hide} */ 5469 public static final String NETSTATS_UID_DELETE_AGE = "netstats_uid_delete_age"; 5470 5471 /** {@hide} */ 5472 public static final String NETSTATS_UID_TAG_BUCKET_DURATION = "netstats_uid_tag_bucket_duration"; 5473 /** {@hide} */ 5474 public static final String NETSTATS_UID_TAG_PERSIST_BYTES = "netstats_uid_tag_persist_bytes"; 5475 /** {@hide} */ 5476 public static final String NETSTATS_UID_TAG_ROTATE_AGE = "netstats_uid_tag_rotate_age"; 5477 /** {@hide} */ 5478 public static final String NETSTATS_UID_TAG_DELETE_AGE = "netstats_uid_tag_delete_age"; 5479 5480 /** 5481 * User preference for which network(s) should be used. Only the 5482 * connectivity service should touch this. 5483 */ 5484 public static final String NETWORK_PREFERENCE = "network_preference"; 5485 5486 /** 5487 * Which package name to use for network scoring. If null, or if the package is not a valid 5488 * scorer app, external network scores will neither be requested nor accepted. 5489 * @hide 5490 */ 5491 public static final String NETWORK_SCORER_APP = "network_scorer_app"; 5492 5493 /** 5494 * If the NITZ_UPDATE_DIFF time is exceeded then an automatic adjustment 5495 * to SystemClock will be allowed even if NITZ_UPDATE_SPACING has not been 5496 * exceeded. 5497 * @hide 5498 */ 5499 public static final String NITZ_UPDATE_DIFF = "nitz_update_diff"; 5500 5501 /** 5502 * The length of time in milli-seconds that automatic small adjustments to 5503 * SystemClock are ignored if NITZ_UPDATE_DIFF is not exceeded. 5504 * @hide 5505 */ 5506 public static final String NITZ_UPDATE_SPACING = "nitz_update_spacing"; 5507 5508 /** Preferred NTP server. {@hide} */ 5509 public static final String NTP_SERVER = "ntp_server"; 5510 /** Timeout in milliseconds to wait for NTP server. {@hide} */ 5511 public static final String NTP_TIMEOUT = "ntp_timeout"; 5512 5513 /** 5514 * Whether the package manager should send package verification broadcasts for verifiers to 5515 * review apps prior to installation. 5516 * 1 = request apps to be verified prior to installation, if a verifier exists. 5517 * 0 = do not verify apps before installation 5518 * @hide 5519 */ 5520 public static final String PACKAGE_VERIFIER_ENABLE = "package_verifier_enable"; 5521 5522 /** Timeout for package verification. 5523 * @hide */ 5524 public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout"; 5525 5526 /** Default response code for package verification. 5527 * @hide */ 5528 public static final String PACKAGE_VERIFIER_DEFAULT_RESPONSE = "verifier_default_response"; 5529 5530 /** 5531 * Show package verification setting in the Settings app. 5532 * 1 = show (default) 5533 * 0 = hide 5534 * @hide 5535 */ 5536 public static final String PACKAGE_VERIFIER_SETTING_VISIBLE = "verifier_setting_visible"; 5537 5538 /** 5539 * Run package verificaiton on apps installed through ADB/ADT/USB 5540 * 1 = perform package verification on ADB installs (default) 5541 * 0 = bypass package verification on ADB installs 5542 * @hide 5543 */ 5544 public static final String PACKAGE_VERIFIER_INCLUDE_ADB = "verifier_verify_adb_installs"; 5545 5546 /** 5547 * The interval in milliseconds at which to check packet counts on the 5548 * mobile data interface when screen is on, to detect possible data 5549 * connection problems. 5550 * @hide 5551 */ 5552 public static final String PDP_WATCHDOG_POLL_INTERVAL_MS = 5553 "pdp_watchdog_poll_interval_ms"; 5554 5555 /** 5556 * The interval in milliseconds at which to check packet counts on the 5557 * mobile data interface when screen is off, to detect possible data 5558 * connection problems. 5559 * @hide 5560 */ 5561 public static final String PDP_WATCHDOG_LONG_POLL_INTERVAL_MS = 5562 "pdp_watchdog_long_poll_interval_ms"; 5563 5564 /** 5565 * The interval in milliseconds at which to check packet counts on the 5566 * mobile data interface after {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} 5567 * outgoing packets has been reached without incoming packets. 5568 * @hide 5569 */ 5570 public static final String PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS = 5571 "pdp_watchdog_error_poll_interval_ms"; 5572 5573 /** 5574 * The number of outgoing packets sent without seeing an incoming packet 5575 * that triggers a countdown (of {@link #PDP_WATCHDOG_ERROR_POLL_COUNT} 5576 * device is logged to the event log 5577 * @hide 5578 */ 5579 public static final String PDP_WATCHDOG_TRIGGER_PACKET_COUNT = 5580 "pdp_watchdog_trigger_packet_count"; 5581 5582 /** 5583 * The number of polls to perform (at {@link #PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS}) 5584 * after hitting {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} before 5585 * attempting data connection recovery. 5586 * @hide 5587 */ 5588 public static final String PDP_WATCHDOG_ERROR_POLL_COUNT = 5589 "pdp_watchdog_error_poll_count"; 5590 5591 /** 5592 * The number of failed PDP reset attempts before moving to something more 5593 * drastic: re-registering to the network. 5594 * @hide 5595 */ 5596 public static final String PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT = 5597 "pdp_watchdog_max_pdp_reset_fail_count"; 5598 5599 /** 5600 * A positive value indicates how often the SamplingProfiler 5601 * should take snapshots. Zero value means SamplingProfiler 5602 * is disabled. 5603 * 5604 * @hide 5605 */ 5606 public static final String SAMPLING_PROFILER_MS = "sampling_profiler_ms"; 5607 5608 /** 5609 * URL to open browser on to allow user to manage a prepay account 5610 * @hide 5611 */ 5612 public static final String SETUP_PREPAID_DATA_SERVICE_URL = 5613 "setup_prepaid_data_service_url"; 5614 5615 /** 5616 * URL to attempt a GET on to see if this is a prepay device 5617 * @hide 5618 */ 5619 public static final String SETUP_PREPAID_DETECTION_TARGET_URL = 5620 "setup_prepaid_detection_target_url"; 5621 5622 /** 5623 * Host to check for a redirect to after an attempt to GET 5624 * SETUP_PREPAID_DETECTION_TARGET_URL. (If we redirected there, 5625 * this is a prepaid device with zero balance.) 5626 * @hide 5627 */ 5628 public static final String SETUP_PREPAID_DETECTION_REDIR_HOST = 5629 "setup_prepaid_detection_redir_host"; 5630 5631 /** 5632 * The interval in milliseconds at which to check the number of SMS sent out without asking 5633 * for use permit, to limit the un-authorized SMS usage. 5634 * 5635 * @hide 5636 */ 5637 public static final String SMS_OUTGOING_CHECK_INTERVAL_MS = 5638 "sms_outgoing_check_interval_ms"; 5639 5640 /** 5641 * The number of outgoing SMS sent without asking for user permit (of {@link 5642 * #SMS_OUTGOING_CHECK_INTERVAL_MS} 5643 * 5644 * @hide 5645 */ 5646 public static final String SMS_OUTGOING_CHECK_MAX_COUNT = 5647 "sms_outgoing_check_max_count"; 5648 5649 /** 5650 * Used to disable SMS short code confirmation - defaults to true. 5651 * True indcates we will do the check, etc. Set to false to disable. 5652 * @see com.android.internal.telephony.SmsUsageMonitor 5653 * @hide 5654 */ 5655 public static final String SMS_SHORT_CODE_CONFIRMATION = "sms_short_code_confirmation"; 5656 5657 /** 5658 * Used to select which country we use to determine premium sms codes. 5659 * One of com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_SIM, 5660 * com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_NETWORK, 5661 * or com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_BOTH. 5662 * @hide 5663 */ 5664 public static final String SMS_SHORT_CODE_RULE = "sms_short_code_rule"; 5665 5666 /** 5667 * Used to select TCP's default initial receiver window size in segments - defaults to a build config value 5668 * @hide 5669 */ 5670 public static final String TCP_DEFAULT_INIT_RWND = "tcp_default_init_rwnd"; 5671 5672 /** 5673 * Used to disable Tethering on a device - defaults to true 5674 * @hide 5675 */ 5676 public static final String TETHER_SUPPORTED = "tether_supported"; 5677 5678 /** 5679 * Used to require DUN APN on the device or not - defaults to a build config value 5680 * which defaults to false 5681 * @hide 5682 */ 5683 public static final String TETHER_DUN_REQUIRED = "tether_dun_required"; 5684 5685 /** 5686 * Used to hold a gservices-provisioned apn value for DUN. If set, or the 5687 * corresponding build config values are set it will override the APN DB 5688 * values. 5689 * Consists of a comma seperated list of strings: 5690 * "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" 5691 * note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" 5692 * @hide 5693 */ 5694 public static final String TETHER_DUN_APN = "tether_dun_apn"; 5695 5696 /** 5697 * USB Mass Storage Enabled 5698 */ 5699 public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled"; 5700 5701 /** 5702 * If this setting is set (to anything), then all references 5703 * to Gmail on the device must change to Google Mail. 5704 */ 5705 public static final String USE_GOOGLE_MAIL = "use_google_mail"; 5706 5707 /** 5708 * Webview Data reduction proxy key. 5709 * @hide 5710 */ 5711 public static final String WEBVIEW_DATA_REDUCTION_PROXY_KEY = 5712 "webview_data_reduction_proxy_key"; 5713 5714 /** 5715 * Whether Wifi display is enabled/disabled 5716 * 0=disabled. 1=enabled. 5717 * @hide 5718 */ 5719 public static final String WIFI_DISPLAY_ON = "wifi_display_on"; 5720 5721 /** 5722 * Whether Wifi display certification mode is enabled/disabled 5723 * 0=disabled. 1=enabled. 5724 * @hide 5725 */ 5726 public static final String WIFI_DISPLAY_CERTIFICATION_ON = 5727 "wifi_display_certification_on"; 5728 5729 /** 5730 * WPS Configuration method used by Wifi display, this setting only 5731 * takes effect when WIFI_DISPLAY_CERTIFICATION_ON is 1 (enabled). 5732 * 5733 * Possible values are: 5734 * 5735 * WpsInfo.INVALID: use default WPS method chosen by framework 5736 * WpsInfo.PBC : use Push button 5737 * WpsInfo.KEYPAD : use Keypad 5738 * WpsInfo.DISPLAY: use Display 5739 * @hide 5740 */ 5741 public static final String WIFI_DISPLAY_WPS_CONFIG = 5742 "wifi_display_wps_config"; 5743 5744 /** 5745 * Whether to notify the user of open networks. 5746 * <p> 5747 * If not connected and the scan results have an open network, we will 5748 * put this notification up. If we attempt to connect to a network or 5749 * the open network(s) disappear, we remove the notification. When we 5750 * show the notification, we will not show it again for 5751 * {@link android.provider.Settings.Secure#WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY} time. 5752 */ 5753 public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = 5754 "wifi_networks_available_notification_on"; 5755 /** 5756 * {@hide} 5757 */ 5758 public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON = 5759 "wimax_networks_available_notification_on"; 5760 5761 /** 5762 * Delay (in seconds) before repeating the Wi-Fi networks available notification. 5763 * Connecting to a network will reset the timer. 5764 */ 5765 public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = 5766 "wifi_networks_available_repeat_delay"; 5767 5768 /** 5769 * 802.11 country code in ISO 3166 format 5770 * @hide 5771 */ 5772 public static final String WIFI_COUNTRY_CODE = "wifi_country_code"; 5773 5774 /** 5775 * The interval in milliseconds to issue wake up scans when wifi needs 5776 * to connect. This is necessary to connect to an access point when 5777 * device is on the move and the screen is off. 5778 * @hide 5779 */ 5780 public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS = 5781 "wifi_framework_scan_interval_ms"; 5782 5783 /** 5784 * The interval in milliseconds after which Wi-Fi is considered idle. 5785 * When idle, it is possible for the device to be switched from Wi-Fi to 5786 * the mobile data network. 5787 * @hide 5788 */ 5789 public static final String WIFI_IDLE_MS = "wifi_idle_ms"; 5790 5791 /** 5792 * When the number of open networks exceeds this number, the 5793 * least-recently-used excess networks will be removed. 5794 */ 5795 public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept"; 5796 5797 /** 5798 * Whether the Wi-Fi should be on. Only the Wi-Fi service should touch this. 5799 */ 5800 public static final String WIFI_ON = "wifi_on"; 5801 5802 /** 5803 * Setting to allow scans to be enabled even wifi is turned off for connectivity. 5804 * @hide 5805 */ 5806 public static final String WIFI_SCAN_ALWAYS_AVAILABLE = 5807 "wifi_scan_always_enabled"; 5808 5809 /** 5810 * Used to save the Wifi_ON state prior to tethering. 5811 * This state will be checked to restore Wifi after 5812 * the user turns off tethering. 5813 * 5814 * @hide 5815 */ 5816 public static final String WIFI_SAVED_STATE = "wifi_saved_state"; 5817 5818 /** 5819 * The interval in milliseconds to scan as used by the wifi supplicant 5820 * @hide 5821 */ 5822 public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_MS = 5823 "wifi_supplicant_scan_interval_ms"; 5824 5825 /** 5826 * whether frameworks handles wifi auto-join 5827 * @hide 5828 */ 5829 public static final String WIFI_ENHANCED_AUTO_JOIN = 5830 "wifi_enhanced_auto_join"; 5831 5832 /** 5833 * whether settings show RSSI 5834 * @hide 5835 */ 5836 public static final String WIFI_NETWORK_SHOW_RSSI = 5837 "wifi_network_show_rssi"; 5838 5839 /** 5840 * The interval in milliseconds to scan at supplicant when p2p is connected 5841 * @hide 5842 */ 5843 public static final String WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS = 5844 "wifi_scan_interval_p2p_connected_ms"; 5845 5846 /** 5847 * Whether the Wi-Fi watchdog is enabled. 5848 */ 5849 public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on"; 5850 5851 /** 5852 * Setting to turn off poor network avoidance on Wi-Fi. Feature is enabled by default and 5853 * the setting needs to be set to 0 to disable it. 5854 * @hide 5855 */ 5856 public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED = 5857 "wifi_watchdog_poor_network_test_enabled"; 5858 5859 /** 5860 * Setting to turn on suspend optimizations at screen off on Wi-Fi. Enabled by default and 5861 * needs to be set to 0 to disable it. 5862 * @hide 5863 */ 5864 public static final String WIFI_SUSPEND_OPTIMIZATIONS_ENABLED = 5865 "wifi_suspend_optimizations_enabled"; 5866 5867 /** 5868 * The maximum number of times we will retry a connection to an access 5869 * point for which we have failed in acquiring an IP address from DHCP. 5870 * A value of N means that we will make N+1 connection attempts in all. 5871 */ 5872 public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count"; 5873 5874 /** 5875 * Maximum amount of time in milliseconds to hold a wakelock while waiting for mobile 5876 * data connectivity to be established after a disconnect from Wi-Fi. 5877 */ 5878 public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = 5879 "wifi_mobile_data_transition_wakelock_timeout_ms"; 5880 5881 /** 5882 * The operational wifi frequency band 5883 * Set to one of {@link WifiManager#WIFI_FREQUENCY_BAND_AUTO}, 5884 * {@link WifiManager#WIFI_FREQUENCY_BAND_5GHZ} or 5885 * {@link WifiManager#WIFI_FREQUENCY_BAND_2GHZ} 5886 * 5887 * @hide 5888 */ 5889 public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band"; 5890 5891 /** 5892 * The Wi-Fi peer-to-peer device name 5893 * @hide 5894 */ 5895 public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name"; 5896 5897 /** 5898 * The min time between wifi disable and wifi enable 5899 * @hide 5900 */ 5901 public static final String WIFI_REENABLE_DELAY_MS = "wifi_reenable_delay"; 5902 5903 /** 5904 * The number of milliseconds to delay when checking for data stalls during 5905 * non-aggressive detection. (screen is turned off.) 5906 * @hide 5907 */ 5908 public static final String DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS = 5909 "data_stall_alarm_non_aggressive_delay_in_ms"; 5910 5911 /** 5912 * The number of milliseconds to delay when checking for data stalls during 5913 * aggressive detection. (screen on or suspected data stall) 5914 * @hide 5915 */ 5916 public static final String DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS = 5917 "data_stall_alarm_aggressive_delay_in_ms"; 5918 5919 /** 5920 * The number of milliseconds to allow the provisioning apn to remain active 5921 * @hide 5922 */ 5923 public static final String PROVISIONING_APN_ALARM_DELAY_IN_MS = 5924 "provisioning_apn_alarm_delay_in_ms"; 5925 5926 /** 5927 * The interval in milliseconds at which to check gprs registration 5928 * after the first registration mismatch of gprs and voice service, 5929 * to detect possible data network registration problems. 5930 * 5931 * @hide 5932 */ 5933 public static final String GPRS_REGISTER_CHECK_PERIOD_MS = 5934 "gprs_register_check_period_ms"; 5935 5936 /** 5937 * Nonzero causes Log.wtf() to crash. 5938 * @hide 5939 */ 5940 public static final String WTF_IS_FATAL = "wtf_is_fatal"; 5941 5942 /** 5943 * Ringer mode. This is used internally, changing this value will not 5944 * change the ringer mode. See AudioManager. 5945 */ 5946 public static final String MODE_RINGER = "mode_ringer"; 5947 5948 /** 5949 * Overlay display devices setting. 5950 * The associated value is a specially formatted string that describes the 5951 * size and density of simulated secondary display devices. 5952 * <p> 5953 * Format: {width}x{height}/{dpi};... 5954 * </p><p> 5955 * Example: 5956 * <ul> 5957 * <li><code>1280x720/213</code>: make one overlay that is 1280x720 at 213dpi.</li> 5958 * <li><code>1920x1080/320;1280x720/213</code>: make two overlays, the first 5959 * at 1080p and the second at 720p.</li> 5960 * <li>If the value is empty, then no overlay display devices are created.</li> 5961 * </ul></p> 5962 * 5963 * @hide 5964 */ 5965 public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices"; 5966 5967 /** 5968 * Threshold values for the duration and level of a discharge cycle, 5969 * under which we log discharge cycle info. 5970 * 5971 * @hide 5972 */ 5973 public static final String 5974 BATTERY_DISCHARGE_DURATION_THRESHOLD = "battery_discharge_duration_threshold"; 5975 5976 /** @hide */ 5977 public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold"; 5978 5979 /** 5980 * Flag for allowing ActivityManagerService to send ACTION_APP_ERROR 5981 * intents on application crashes and ANRs. If this is disabled, the 5982 * crash/ANR dialog will never display the "Report" button. 5983 * <p> 5984 * Type: int (0 = disallow, 1 = allow) 5985 * 5986 * @hide 5987 */ 5988 public static final String SEND_ACTION_APP_ERROR = "send_action_app_error"; 5989 5990 /** 5991 * Maximum age of entries kept by {@link DropBoxManager}. 5992 * 5993 * @hide 5994 */ 5995 public static final String DROPBOX_AGE_SECONDS = "dropbox_age_seconds"; 5996 5997 /** 5998 * Maximum number of entry files which {@link DropBoxManager} will keep 5999 * around. 6000 * 6001 * @hide 6002 */ 6003 public static final String DROPBOX_MAX_FILES = "dropbox_max_files"; 6004 6005 /** 6006 * Maximum amount of disk space used by {@link DropBoxManager} no matter 6007 * what. 6008 * 6009 * @hide 6010 */ 6011 public static final String DROPBOX_QUOTA_KB = "dropbox_quota_kb"; 6012 6013 /** 6014 * Percent of free disk (excluding reserve) which {@link DropBoxManager} 6015 * will use. 6016 * 6017 * @hide 6018 */ 6019 public static final String DROPBOX_QUOTA_PERCENT = "dropbox_quota_percent"; 6020 6021 /** 6022 * Percent of total disk which {@link DropBoxManager} will never dip 6023 * into. 6024 * 6025 * @hide 6026 */ 6027 public static final String DROPBOX_RESERVE_PERCENT = "dropbox_reserve_percent"; 6028 6029 /** 6030 * Prefix for per-tag dropbox disable/enable settings. 6031 * 6032 * @hide 6033 */ 6034 public static final String DROPBOX_TAG_PREFIX = "dropbox:"; 6035 6036 /** 6037 * Lines of logcat to include with system crash/ANR/etc. reports, as a 6038 * prefix of the dropbox tag of the report type. For example, 6039 * "logcat_for_system_server_anr" controls the lines of logcat captured 6040 * with system server ANR reports. 0 to disable. 6041 * 6042 * @hide 6043 */ 6044 public static final String ERROR_LOGCAT_PREFIX = "logcat_for_"; 6045 6046 /** 6047 * The interval in minutes after which the amount of free storage left 6048 * on the device is logged to the event log 6049 * 6050 * @hide 6051 */ 6052 public static final String SYS_FREE_STORAGE_LOG_INTERVAL = "sys_free_storage_log_interval"; 6053 6054 /** 6055 * Threshold for the amount of change in disk free space required to 6056 * report the amount of free space. Used to prevent spamming the logs 6057 * when the disk free space isn't changing frequently. 6058 * 6059 * @hide 6060 */ 6061 public static final String 6062 DISK_FREE_CHANGE_REPORTING_THRESHOLD = "disk_free_change_reporting_threshold"; 6063 6064 /** 6065 * Minimum percentage of free storage on the device that is used to 6066 * determine if the device is running low on storage. The default is 10. 6067 * <p> 6068 * Say this value is set to 10, the device is considered running low on 6069 * storage if 90% or more of the device storage is filled up. 6070 * 6071 * @hide 6072 */ 6073 public static final String 6074 SYS_STORAGE_THRESHOLD_PERCENTAGE = "sys_storage_threshold_percentage"; 6075 6076 /** 6077 * Maximum byte size of the low storage threshold. This is to ensure 6078 * that {@link #SYS_STORAGE_THRESHOLD_PERCENTAGE} does not result in an 6079 * overly large threshold for large storage devices. Currently this must 6080 * be less than 2GB. This default is 500MB. 6081 * 6082 * @hide 6083 */ 6084 public static final String 6085 SYS_STORAGE_THRESHOLD_MAX_BYTES = "sys_storage_threshold_max_bytes"; 6086 6087 /** 6088 * Minimum bytes of free storage on the device before the data partition 6089 * is considered full. By default, 1 MB is reserved to avoid system-wide 6090 * SQLite disk full exceptions. 6091 * 6092 * @hide 6093 */ 6094 public static final String 6095 SYS_STORAGE_FULL_THRESHOLD_BYTES = "sys_storage_full_threshold_bytes"; 6096 6097 /** 6098 * The maximum reconnect delay for short network outages or when the 6099 * network is suspended due to phone use. 6100 * 6101 * @hide 6102 */ 6103 public static final String 6104 SYNC_MAX_RETRY_DELAY_IN_SECONDS = "sync_max_retry_delay_in_seconds"; 6105 6106 /** 6107 * The number of milliseconds to delay before sending out 6108 * {@link ConnectivityManager#CONNECTIVITY_ACTION} broadcasts. 6109 * 6110 * @hide 6111 */ 6112 public static final String CONNECTIVITY_CHANGE_DELAY = "connectivity_change_delay"; 6113 6114 6115 /** 6116 * Network sampling interval, in seconds. We'll generate link information 6117 * about bytes/packets sent and error rates based on data sampled in this interval 6118 * 6119 * @hide 6120 */ 6121 6122 public static final String CONNECTIVITY_SAMPLING_INTERVAL_IN_SECONDS = 6123 "connectivity_sampling_interval_in_seconds"; 6124 6125 /** 6126 * The series of successively longer delays used in retrying to download PAC file. 6127 * Last delay is used between successful PAC downloads. 6128 * 6129 * @hide 6130 */ 6131 public static final String PAC_CHANGE_DELAY = "pac_change_delay"; 6132 6133 /** 6134 * Setting to turn off captive portal detection. Feature is enabled by 6135 * default and the setting needs to be set to 0 to disable it. 6136 * 6137 * @hide 6138 */ 6139 public static final String 6140 CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled"; 6141 6142 /** 6143 * The server used for captive portal detection upon a new conection. A 6144 * 204 response code from the server is used for validation. 6145 * 6146 * @hide 6147 */ 6148 public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server"; 6149 6150 /** 6151 * Whether network service discovery is enabled. 6152 * 6153 * @hide 6154 */ 6155 public static final String NSD_ON = "nsd_on"; 6156 6157 /** 6158 * Let user pick default install location. 6159 * 6160 * @hide 6161 */ 6162 public static final String SET_INSTALL_LOCATION = "set_install_location"; 6163 6164 /** 6165 * Default install location value. 6166 * 0 = auto, let system decide 6167 * 1 = internal 6168 * 2 = sdcard 6169 * @hide 6170 */ 6171 public static final String DEFAULT_INSTALL_LOCATION = "default_install_location"; 6172 6173 /** 6174 * ms during which to consume extra events related to Inet connection 6175 * condition after a transtion to fully-connected 6176 * 6177 * @hide 6178 */ 6179 public static final String 6180 INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay"; 6181 6182 /** 6183 * ms during which to consume extra events related to Inet connection 6184 * condtion after a transtion to partly-connected 6185 * 6186 * @hide 6187 */ 6188 public static final String 6189 INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay"; 6190 6191 /** {@hide} */ 6192 public static final String 6193 READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT = "read_external_storage_enforced_default"; 6194 6195 /** 6196 * Host name and port for global http proxy. Uses ':' seperator for 6197 * between host and port. 6198 */ 6199 public static final String HTTP_PROXY = "http_proxy"; 6200 6201 /** 6202 * Host name for global http proxy. Set via ConnectivityManager. 6203 * 6204 * @hide 6205 */ 6206 public static final String GLOBAL_HTTP_PROXY_HOST = "global_http_proxy_host"; 6207 6208 /** 6209 * Integer host port for global http proxy. Set via ConnectivityManager. 6210 * 6211 * @hide 6212 */ 6213 public static final String GLOBAL_HTTP_PROXY_PORT = "global_http_proxy_port"; 6214 6215 /** 6216 * Exclusion list for global proxy. This string contains a list of 6217 * comma-separated domains where the global proxy does not apply. 6218 * Domains should be listed in a comma- separated list. Example of 6219 * acceptable formats: ".domain1.com,my.domain2.com" Use 6220 * ConnectivityManager to set/get. 6221 * 6222 * @hide 6223 */ 6224 public static final String 6225 GLOBAL_HTTP_PROXY_EXCLUSION_LIST = "global_http_proxy_exclusion_list"; 6226 6227 /** 6228 * The location PAC File for the proxy. 6229 * @hide 6230 */ 6231 public static final String 6232 GLOBAL_HTTP_PROXY_PAC = "global_proxy_pac_url"; 6233 6234 /** 6235 * Enables the UI setting to allow the user to specify the global HTTP 6236 * proxy and associated exclusion list. 6237 * 6238 * @hide 6239 */ 6240 public static final String SET_GLOBAL_HTTP_PROXY = "set_global_http_proxy"; 6241 6242 /** 6243 * Setting for default DNS in case nobody suggests one 6244 * 6245 * @hide 6246 */ 6247 public static final String DEFAULT_DNS_SERVER = "default_dns_server"; 6248 6249 /** {@hide} */ 6250 public static final String 6251 BLUETOOTH_HEADSET_PRIORITY_PREFIX = "bluetooth_headset_priority_"; 6252 /** {@hide} */ 6253 public static final String 6254 BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX = "bluetooth_a2dp_sink_priority_"; 6255 /** {@hide} */ 6256 public static final String 6257 BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX = "bluetooth_input_device_priority_"; 6258 /** {@hide} */ 6259 public static final String 6260 BLUETOOTH_MAP_PRIORITY_PREFIX = "bluetooth_map_priority_"; 6261 6262 /** 6263 * Get the key that retrieves a bluetooth headset's priority. 6264 * @hide 6265 */ getBluetoothHeadsetPriorityKey(String address)6266 public static final String getBluetoothHeadsetPriorityKey(String address) { 6267 return BLUETOOTH_HEADSET_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6268 } 6269 6270 /** 6271 * Get the key that retrieves a bluetooth a2dp sink's priority. 6272 * @hide 6273 */ getBluetoothA2dpSinkPriorityKey(String address)6274 public static final String getBluetoothA2dpSinkPriorityKey(String address) { 6275 return BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6276 } 6277 6278 /** 6279 * Get the key that retrieves a bluetooth Input Device's priority. 6280 * @hide 6281 */ getBluetoothInputDevicePriorityKey(String address)6282 public static final String getBluetoothInputDevicePriorityKey(String address) { 6283 return BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6284 } 6285 6286 /** 6287 * Get the key that retrieves a bluetooth map priority. 6288 * @hide 6289 */ getBluetoothMapPriorityKey(String address)6290 public static final String getBluetoothMapPriorityKey(String address) { 6291 return BLUETOOTH_MAP_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT); 6292 } 6293 /** 6294 * Scaling factor for normal window animations. Setting to 0 will 6295 * disable window animations. 6296 */ 6297 public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale"; 6298 6299 /** 6300 * Scaling factor for activity transition animations. Setting to 0 will 6301 * disable window animations. 6302 */ 6303 public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale"; 6304 6305 /** 6306 * Scaling factor for Animator-based animations. This affects both the 6307 * start delay and duration of all such animations. Setting to 0 will 6308 * cause animations to end immediately. The default value is 1. 6309 */ 6310 public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale"; 6311 6312 /** 6313 * Scaling factor for normal window animations. Setting to 0 will 6314 * disable window animations. 6315 * 6316 * @hide 6317 */ 6318 public static final String FANCY_IME_ANIMATIONS = "fancy_ime_animations"; 6319 6320 /** 6321 * If 0, the compatibility mode is off for all applications. 6322 * If 1, older applications run under compatibility mode. 6323 * TODO: remove this settings before code freeze (bug/1907571) 6324 * @hide 6325 */ 6326 public static final String COMPATIBILITY_MODE = "compatibility_mode"; 6327 6328 /** 6329 * CDMA only settings 6330 * Emergency Tone 0 = Off 6331 * 1 = Alert 6332 * 2 = Vibrate 6333 * @hide 6334 */ 6335 public static final String EMERGENCY_TONE = "emergency_tone"; 6336 6337 /** 6338 * CDMA only settings 6339 * Whether the auto retry is enabled. The value is 6340 * boolean (1 or 0). 6341 * @hide 6342 */ 6343 public static final String CALL_AUTO_RETRY = "call_auto_retry"; 6344 6345 /** 6346 * The preferred network mode 7 = Global 6347 * 6 = EvDo only 6348 * 5 = CDMA w/o EvDo 6349 * 4 = CDMA / EvDo auto 6350 * 3 = GSM / WCDMA auto 6351 * 2 = WCDMA only 6352 * 1 = GSM only 6353 * 0 = GSM / WCDMA preferred 6354 * @hide 6355 */ 6356 public static final String PREFERRED_NETWORK_MODE = 6357 "preferred_network_mode"; 6358 6359 /** 6360 * Name of an application package to be debugged. 6361 */ 6362 public static final String DEBUG_APP = "debug_app"; 6363 6364 /** 6365 * If 1, when launching DEBUG_APP it will wait for the debugger before 6366 * starting user code. If 0, it will run normally. 6367 */ 6368 public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger"; 6369 6370 /** 6371 * Control whether the process CPU usage meter should be shown. 6372 */ 6373 public static final String SHOW_PROCESSES = "show_processes"; 6374 6375 /** 6376 * If 1 low power mode is enabled. 6377 * @hide 6378 */ 6379 public static final String LOW_POWER_MODE = "low_power"; 6380 6381 /** 6382 * Battery level [1-99] at which low power mode automatically turns on. 6383 * If 0, it will not automatically turn on. 6384 * @hide 6385 */ 6386 public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level"; 6387 6388 /** 6389 * If 1, the activity manager will aggressively finish activities and 6390 * processes as soon as they are no longer needed. If 0, the normal 6391 * extended lifetime is used. 6392 */ 6393 public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities"; 6394 6395 /** 6396 * Use Dock audio output for media: 6397 * 0 = disabled 6398 * 1 = enabled 6399 * @hide 6400 */ 6401 public static final String DOCK_AUDIO_MEDIA_ENABLED = "dock_audio_media_enabled"; 6402 6403 /** 6404 * Persisted safe headphone volume management state by AudioService 6405 * @hide 6406 */ 6407 public static final String AUDIO_SAFE_VOLUME_STATE = "audio_safe_volume_state"; 6408 6409 /** 6410 * URL for tzinfo (time zone) updates 6411 * @hide 6412 */ 6413 public static final String TZINFO_UPDATE_CONTENT_URL = "tzinfo_content_url"; 6414 6415 /** 6416 * URL for tzinfo (time zone) update metadata 6417 * @hide 6418 */ 6419 public static final String TZINFO_UPDATE_METADATA_URL = "tzinfo_metadata_url"; 6420 6421 /** 6422 * URL for selinux (mandatory access control) updates 6423 * @hide 6424 */ 6425 public static final String SELINUX_UPDATE_CONTENT_URL = "selinux_content_url"; 6426 6427 /** 6428 * URL for selinux (mandatory access control) update metadata 6429 * @hide 6430 */ 6431 public static final String SELINUX_UPDATE_METADATA_URL = "selinux_metadata_url"; 6432 6433 /** 6434 * URL for sms short code updates 6435 * @hide 6436 */ 6437 public static final String SMS_SHORT_CODES_UPDATE_CONTENT_URL = 6438 "sms_short_codes_content_url"; 6439 6440 /** 6441 * URL for sms short code update metadata 6442 * @hide 6443 */ 6444 public static final String SMS_SHORT_CODES_UPDATE_METADATA_URL = 6445 "sms_short_codes_metadata_url"; 6446 6447 /** 6448 * URL for cert pinlist updates 6449 * @hide 6450 */ 6451 public static final String CERT_PIN_UPDATE_CONTENT_URL = "cert_pin_content_url"; 6452 6453 /** 6454 * URL for cert pinlist updates 6455 * @hide 6456 */ 6457 public static final String CERT_PIN_UPDATE_METADATA_URL = "cert_pin_metadata_url"; 6458 6459 /** 6460 * URL for intent firewall updates 6461 * @hide 6462 */ 6463 public static final String INTENT_FIREWALL_UPDATE_CONTENT_URL = 6464 "intent_firewall_content_url"; 6465 6466 /** 6467 * URL for intent firewall update metadata 6468 * @hide 6469 */ 6470 public static final String INTENT_FIREWALL_UPDATE_METADATA_URL = 6471 "intent_firewall_metadata_url"; 6472 6473 /** 6474 * SELinux enforcement status. If 0, permissive; if 1, enforcing. 6475 * @hide 6476 */ 6477 public static final String SELINUX_STATUS = "selinux_status"; 6478 6479 /** 6480 * Developer setting to force RTL layout. 6481 * @hide 6482 */ 6483 public static final String DEVELOPMENT_FORCE_RTL = "debug.force_rtl"; 6484 6485 /** 6486 * Milliseconds after screen-off after which low battery sounds will be silenced. 6487 * 6488 * If zero, battery sounds will always play. 6489 * Defaults to @integer/def_low_battery_sound_timeout in SettingsProvider. 6490 * 6491 * @hide 6492 */ 6493 public static final String LOW_BATTERY_SOUND_TIMEOUT = "low_battery_sound_timeout"; 6494 6495 /** 6496 * Milliseconds to wait before bouncing Wi-Fi after settings is restored. Note that after 6497 * the caller is done with this, they should call {@link ContentResolver#delete} to 6498 * clean up any value that they may have written. 6499 * 6500 * @hide 6501 */ 6502 public static final String WIFI_BOUNCE_DELAY_OVERRIDE_MS = "wifi_bounce_delay_override_ms"; 6503 6504 /** 6505 * Defines global runtime overrides to window policy. 6506 * 6507 * See {@link com.android.internal.policy.impl.PolicyControl} for value format. 6508 * 6509 * @hide 6510 */ 6511 public static final String POLICY_CONTROL = "policy_control"; 6512 6513 /** 6514 * Defines global zen mode. ZEN_MODE_OFF, ZEN_MODE_IMPORTANT_INTERRUPTIONS, 6515 * or ZEN_MODE_NO_INTERRUPTIONS. 6516 * 6517 * @hide 6518 */ 6519 public static final String ZEN_MODE = "zen_mode"; 6520 6521 /** @hide */ public static final int ZEN_MODE_OFF = 0; 6522 /** @hide */ public static final int ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1; 6523 /** @hide */ public static final int ZEN_MODE_NO_INTERRUPTIONS = 2; 6524 zenModeToString(int mode)6525 /** @hide */ public static String zenModeToString(int mode) { 6526 if (mode == ZEN_MODE_IMPORTANT_INTERRUPTIONS) return "ZEN_MODE_IMPORTANT_INTERRUPTIONS"; 6527 if (mode == ZEN_MODE_NO_INTERRUPTIONS) return "ZEN_MODE_NO_INTERRUPTIONS"; 6528 return "ZEN_MODE_OFF"; 6529 } 6530 6531 /** 6532 * Opaque value, changes when persisted zen mode configuration changes. 6533 * 6534 * @hide 6535 */ 6536 public static final String ZEN_MODE_CONFIG_ETAG = "zen_mode_config_etag"; 6537 6538 /** 6539 * Defines global heads up toggle. One of HEADS_UP_OFF, HEADS_UP_ON. 6540 * 6541 * @hide 6542 */ 6543 public static final String HEADS_UP_NOTIFICATIONS_ENABLED = 6544 "heads_up_notifications_enabled"; 6545 6546 /** @hide */ public static final int HEADS_UP_OFF = 0; 6547 /** @hide */ public static final int HEADS_UP_ON = 1; 6548 6549 /** 6550 * The name of the device 6551 * 6552 * @hide 6553 */ 6554 public static final String DEVICE_NAME = "device_name"; 6555 6556 /** 6557 * Whether it should be possible to create a guest user on the device. 6558 * <p> 6559 * Type: int (0 for disabled, 1 for enabled) 6560 * @hide 6561 */ 6562 public static final String GUEST_USER_ENABLED = "guest_user_enabled"; 6563 6564 /** 6565 * Whether the NetworkScoringService has been first initialized. 6566 * <p> 6567 * Type: int (0 for false, 1 for true) 6568 * @hide 6569 */ 6570 public static final String NETWORK_SCORING_PROVISIONED = "network_scoring_provisioned"; 6571 6572 /** 6573 * Whether the user wants to be prompted for password to decrypt the device on boot. 6574 * This only matters if the storage is encrypted. 6575 * <p> 6576 * Type: int (0 for false, 1 for true) 6577 * @hide 6578 */ 6579 public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt"; 6580 6581 /** 6582 * Settings to backup. This is here so that it's in the same place as the settings 6583 * keys and easy to update. 6584 * 6585 * These keys may be mentioned in the SETTINGS_TO_BACKUP arrays in System 6586 * and Secure as well. This is because those tables drive both backup and 6587 * restore, and restore needs to properly whitelist keys that used to live 6588 * in those namespaces. The keys will only actually be backed up / restored 6589 * if they are also mentioned in this table (Global.SETTINGS_TO_BACKUP). 6590 * 6591 * NOTE: Settings are backed up and restored in the order they appear 6592 * in this array. If you have one setting depending on another, 6593 * make sure that they are ordered appropriately. 6594 * 6595 * @hide 6596 */ 6597 public static final String[] SETTINGS_TO_BACKUP = { 6598 BUGREPORT_IN_POWER_MENU, 6599 STAY_ON_WHILE_PLUGGED_IN, 6600 AUTO_TIME, 6601 AUTO_TIME_ZONE, 6602 POWER_SOUNDS_ENABLED, 6603 DOCK_SOUNDS_ENABLED, 6604 USB_MASS_STORAGE_ENABLED, 6605 ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 6606 WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 6607 WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, 6608 WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, 6609 WIFI_NUM_OPEN_NETWORKS_KEPT, 6610 EMERGENCY_TONE, 6611 CALL_AUTO_RETRY, 6612 DOCK_AUDIO_MEDIA_ENABLED 6613 }; 6614 6615 // Populated lazily, guarded by class object: 6616 private static NameValueCache sNameValueCache = new NameValueCache( 6617 SYS_PROP_SETTING_VERSION, 6618 CONTENT_URI, 6619 CALL_METHOD_GET_GLOBAL, 6620 CALL_METHOD_PUT_GLOBAL); 6621 6622 // Certain settings have been moved from global to the per-user secure namespace 6623 private static final HashSet<String> MOVED_TO_SECURE; 6624 static { 6625 MOVED_TO_SECURE = new HashSet<String>(1); 6626 MOVED_TO_SECURE.add(Settings.Global.INSTALL_NON_MARKET_APPS); 6627 } 6628 6629 /** 6630 * Look up a name in the database. 6631 * @param resolver to access the database with 6632 * @param name to look up in the table 6633 * @return the corresponding value, or null if not present 6634 */ getString(ContentResolver resolver, String name)6635 public static String getString(ContentResolver resolver, String name) { 6636 return getStringForUser(resolver, name, UserHandle.myUserId()); 6637 } 6638 6639 /** @hide */ getStringForUser(ContentResolver resolver, String name, int userHandle)6640 public static String getStringForUser(ContentResolver resolver, String name, 6641 int userHandle) { 6642 if (MOVED_TO_SECURE.contains(name)) { 6643 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global" 6644 + " to android.provider.Settings.Secure, returning read-only value."); 6645 return Secure.getStringForUser(resolver, name, userHandle); 6646 } 6647 return sNameValueCache.getStringForUser(resolver, name, userHandle); 6648 } 6649 6650 /** 6651 * Store a name/value pair into the database. 6652 * @param resolver to access the database with 6653 * @param name to store 6654 * @param value to associate with the name 6655 * @return true if the value was set, false on database errors 6656 */ putString(ContentResolver resolver, String name, String value)6657 public static boolean putString(ContentResolver resolver, 6658 String name, String value) { 6659 return putStringForUser(resolver, name, value, UserHandle.myUserId()); 6660 } 6661 6662 /** @hide */ putStringForUser(ContentResolver resolver, String name, String value, int userHandle)6663 public static boolean putStringForUser(ContentResolver resolver, 6664 String name, String value, int userHandle) { 6665 if (LOCAL_LOGV) { 6666 Log.v(TAG, "Global.putString(name=" + name + ", value=" + value 6667 + " for " + userHandle); 6668 } 6669 // Global and Secure have the same access policy so we can forward writes 6670 if (MOVED_TO_SECURE.contains(name)) { 6671 Log.w(TAG, "Setting " + name + " has moved from android.provider.Settings.Global" 6672 + " to android.provider.Settings.Secure, value is unchanged."); 6673 return Secure.putStringForUser(resolver, name, value, userHandle); 6674 } 6675 return sNameValueCache.putStringForUser(resolver, name, value, userHandle); 6676 } 6677 6678 /** 6679 * Construct the content URI for a particular name/value pair, 6680 * useful for monitoring changes with a ContentObserver. 6681 * @param name to look up in the table 6682 * @return the corresponding content URI, or null if not present 6683 */ getUriFor(String name)6684 public static Uri getUriFor(String name) { 6685 return getUriFor(CONTENT_URI, name); 6686 } 6687 6688 /** 6689 * Convenience function for retrieving a single secure settings value 6690 * as an integer. Note that internally setting values are always 6691 * stored as strings; this function converts the string to an integer 6692 * for you. The default value will be returned if the setting is 6693 * not defined or not an integer. 6694 * 6695 * @param cr The ContentResolver to access. 6696 * @param name The name of the setting to retrieve. 6697 * @param def Value to return if the setting is not defined. 6698 * 6699 * @return The setting's current value, or 'def' if it is not defined 6700 * or not a valid integer. 6701 */ getInt(ContentResolver cr, String name, int def)6702 public static int getInt(ContentResolver cr, String name, int def) { 6703 String v = getString(cr, name); 6704 try { 6705 return v != null ? Integer.parseInt(v) : def; 6706 } catch (NumberFormatException e) { 6707 return def; 6708 } 6709 } 6710 6711 /** 6712 * Convenience function for retrieving a single secure settings value 6713 * as an integer. Note that internally setting values are always 6714 * stored as strings; this function converts the string to an integer 6715 * for you. 6716 * <p> 6717 * This version does not take a default value. If the setting has not 6718 * been set, or the string value is not a number, 6719 * it throws {@link SettingNotFoundException}. 6720 * 6721 * @param cr The ContentResolver to access. 6722 * @param name The name of the setting to retrieve. 6723 * 6724 * @throws SettingNotFoundException Thrown if a setting by the given 6725 * name can't be found or the setting value is not an integer. 6726 * 6727 * @return The setting's current value. 6728 */ getInt(ContentResolver cr, String name)6729 public static int getInt(ContentResolver cr, String name) 6730 throws SettingNotFoundException { 6731 String v = getString(cr, name); 6732 try { 6733 return Integer.parseInt(v); 6734 } catch (NumberFormatException e) { 6735 throw new SettingNotFoundException(name); 6736 } 6737 } 6738 6739 /** 6740 * Convenience function for updating a single settings value as an 6741 * integer. This will either create a new entry in the table if the 6742 * given name does not exist, or modify the value of the existing row 6743 * with that name. Note that internally setting values are always 6744 * stored as strings, so this function converts the given value to a 6745 * string before storing it. 6746 * 6747 * @param cr The ContentResolver to access. 6748 * @param name The name of the setting to modify. 6749 * @param value The new value for the setting. 6750 * @return true if the value was set, false on database errors 6751 */ putInt(ContentResolver cr, String name, int value)6752 public static boolean putInt(ContentResolver cr, String name, int value) { 6753 return putString(cr, name, Integer.toString(value)); 6754 } 6755 6756 /** 6757 * Convenience function for retrieving a single secure settings value 6758 * as a {@code long}. Note that internally setting values are always 6759 * stored as strings; this function converts the string to a {@code long} 6760 * for you. The default value will be returned if the setting is 6761 * not defined or not a {@code long}. 6762 * 6763 * @param cr The ContentResolver to access. 6764 * @param name The name of the setting to retrieve. 6765 * @param def Value to return if the setting is not defined. 6766 * 6767 * @return The setting's current value, or 'def' if it is not defined 6768 * or not a valid {@code long}. 6769 */ getLong(ContentResolver cr, String name, long def)6770 public static long getLong(ContentResolver cr, String name, long def) { 6771 String valString = getString(cr, name); 6772 long value; 6773 try { 6774 value = valString != null ? Long.parseLong(valString) : def; 6775 } catch (NumberFormatException e) { 6776 value = def; 6777 } 6778 return value; 6779 } 6780 6781 /** 6782 * Convenience function for retrieving a single secure settings value 6783 * as a {@code long}. Note that internally setting values are always 6784 * stored as strings; this function converts the string to a {@code long} 6785 * for you. 6786 * <p> 6787 * This version does not take a default value. If the setting has not 6788 * been set, or the string value is not a number, 6789 * it throws {@link SettingNotFoundException}. 6790 * 6791 * @param cr The ContentResolver to access. 6792 * @param name The name of the setting to retrieve. 6793 * 6794 * @return The setting's current value. 6795 * @throws SettingNotFoundException Thrown if a setting by the given 6796 * name can't be found or the setting value is not an integer. 6797 */ getLong(ContentResolver cr, String name)6798 public static long getLong(ContentResolver cr, String name) 6799 throws SettingNotFoundException { 6800 String valString = getString(cr, name); 6801 try { 6802 return Long.parseLong(valString); 6803 } catch (NumberFormatException e) { 6804 throw new SettingNotFoundException(name); 6805 } 6806 } 6807 6808 /** 6809 * Convenience function for updating a secure settings value as a long 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 */ putLong(ContentResolver cr, String name, long value)6821 public static boolean putLong(ContentResolver cr, String name, long value) { 6822 return putString(cr, name, Long.toString(value)); 6823 } 6824 6825 /** 6826 * Convenience function for retrieving a single secure settings value 6827 * as a floating point number. Note that internally setting values are 6828 * always stored as strings; this function converts the string to an 6829 * float for you. The default value will be returned if the setting 6830 * is not defined or not a valid float. 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 float. 6838 */ getFloat(ContentResolver cr, String name, float def)6839 public static float getFloat(ContentResolver cr, String name, float def) { 6840 String v = getString(cr, name); 6841 try { 6842 return v != null ? Float.parseFloat(v) : def; 6843 } catch (NumberFormatException e) { 6844 return def; 6845 } 6846 } 6847 6848 /** 6849 * Convenience function for retrieving a single secure settings value 6850 * as a float. Note that internally setting values are always 6851 * stored as strings; this function converts the string to a float 6852 * for you. 6853 * <p> 6854 * This version does not take a default value. If the setting has not 6855 * been set, or the string value is not a number, 6856 * it throws {@link SettingNotFoundException}. 6857 * 6858 * @param cr The ContentResolver to access. 6859 * @param name The name of the setting to retrieve. 6860 * 6861 * @throws SettingNotFoundException Thrown if a setting by the given 6862 * name can't be found or the setting value is not a float. 6863 * 6864 * @return The setting's current value. 6865 */ getFloat(ContentResolver cr, String name)6866 public static float getFloat(ContentResolver cr, String name) 6867 throws SettingNotFoundException { 6868 String v = getString(cr, name); 6869 if (v == null) { 6870 throw new SettingNotFoundException(name); 6871 } 6872 try { 6873 return Float.parseFloat(v); 6874 } catch (NumberFormatException e) { 6875 throw new SettingNotFoundException(name); 6876 } 6877 } 6878 6879 /** 6880 * Convenience function for updating a single settings value as a 6881 * floating point number. This will either create a new entry in the 6882 * table if the given name does not exist, or modify the value of the 6883 * existing row with that name. Note that internally setting values 6884 * are always stored as strings, so this function converts the given 6885 * value to a string before storing it. 6886 * 6887 * @param cr The ContentResolver to access. 6888 * @param name The name of the setting to modify. 6889 * @param value The new value for the setting. 6890 * @return true if the value was set, false on database errors 6891 */ putFloat(ContentResolver cr, String name, float value)6892 public static boolean putFloat(ContentResolver cr, String name, float value) { 6893 return putString(cr, name, Float.toString(value)); 6894 } 6895 6896 6897 /** 6898 * Subscription to be used for voice call on a multi sim device. The supported values 6899 * are 0 = SUB1, 1 = SUB2 and etc. 6900 * @hide 6901 */ 6902 public static final String MULTI_SIM_VOICE_CALL_SUBSCRIPTION = "multi_sim_voice_call"; 6903 6904 /** 6905 * Used to provide option to user to select subscription during dial. 6906 * The supported values are 0 = disable or 1 = enable prompt. 6907 * @hide 6908 */ 6909 public static final String MULTI_SIM_VOICE_PROMPT = "multi_sim_voice_prompt"; 6910 6911 /** 6912 * Subscription to be used for data call on a multi sim device. The supported values 6913 * are 0 = SUB1, 1 = SUB2 and etc. 6914 * @hide 6915 */ 6916 public static final String MULTI_SIM_DATA_CALL_SUBSCRIPTION = "multi_sim_data_call"; 6917 6918 /** 6919 * Subscription to be used for SMS on a multi sim device. The supported values 6920 * are 0 = SUB1, 1 = SUB2 and etc. 6921 * @hide 6922 */ 6923 public static final String MULTI_SIM_SMS_SUBSCRIPTION = "multi_sim_sms"; 6924 6925 /** 6926 * Used to provide option to user to select subscription during send SMS. 6927 * The value 1 - enable, 0 - disable 6928 * @hide 6929 */ 6930 public static final String MULTI_SIM_SMS_PROMPT = "multi_sim_sms_prompt"; 6931 6932 6933 6934 /** User preferred subscriptions setting. 6935 * This holds the details of the user selected subscription from the card and 6936 * the activation status. Each settings string have the coma separated values 6937 * iccId,appType,appId,activationStatus,3gppIndex,3gpp2Index 6938 * @hide 6939 */ 6940 public static final String[] MULTI_SIM_USER_PREFERRED_SUBS = {"user_preferred_sub1", 6941 "user_preferred_sub2","user_preferred_sub3"}; 6942 } 6943 6944 /** 6945 * User-defined bookmarks and shortcuts. The target of each bookmark is an 6946 * Intent URL, allowing it to be either a web page or a particular 6947 * application activity. 6948 * 6949 * @hide 6950 */ 6951 public static final class Bookmarks implements BaseColumns 6952 { 6953 private static final String TAG = "Bookmarks"; 6954 6955 /** 6956 * The content:// style URL for this table 6957 */ 6958 public static final Uri CONTENT_URI = 6959 Uri.parse("content://" + AUTHORITY + "/bookmarks"); 6960 6961 /** 6962 * The row ID. 6963 * <p>Type: INTEGER</p> 6964 */ 6965 public static final String ID = "_id"; 6966 6967 /** 6968 * Descriptive name of the bookmark that can be displayed to the user. 6969 * If this is empty, the title should be resolved at display time (use 6970 * {@link #getTitle(Context, Cursor)} any time you want to display the 6971 * title of a bookmark.) 6972 * <P> 6973 * Type: TEXT 6974 * </P> 6975 */ 6976 public static final String TITLE = "title"; 6977 6978 /** 6979 * Arbitrary string (displayed to the user) that allows bookmarks to be 6980 * organized into categories. There are some special names for 6981 * standard folders, which all start with '@'. The label displayed for 6982 * the folder changes with the locale (via {@link #getLabelForFolder}) but 6983 * the folder name does not change so you can consistently query for 6984 * the folder regardless of the current locale. 6985 * 6986 * <P>Type: TEXT</P> 6987 * 6988 */ 6989 public static final String FOLDER = "folder"; 6990 6991 /** 6992 * The Intent URL of the bookmark, describing what it points to. This 6993 * value is given to {@link android.content.Intent#getIntent} to create 6994 * an Intent that can be launched. 6995 * <P>Type: TEXT</P> 6996 */ 6997 public static final String INTENT = "intent"; 6998 6999 /** 7000 * Optional shortcut character associated with this bookmark. 7001 * <P>Type: INTEGER</P> 7002 */ 7003 public static final String SHORTCUT = "shortcut"; 7004 7005 /** 7006 * The order in which the bookmark should be displayed 7007 * <P>Type: INTEGER</P> 7008 */ 7009 public static final String ORDERING = "ordering"; 7010 7011 private static final String[] sIntentProjection = { INTENT }; 7012 private static final String[] sShortcutProjection = { ID, SHORTCUT }; 7013 private static final String sShortcutSelection = SHORTCUT + "=?"; 7014 7015 /** 7016 * Convenience function to retrieve the bookmarked Intent for a 7017 * particular shortcut key. 7018 * 7019 * @param cr The ContentResolver to query. 7020 * @param shortcut The shortcut key. 7021 * 7022 * @return Intent The bookmarked URL, or null if there is no bookmark 7023 * matching the given shortcut. 7024 */ getIntentForShortcut(ContentResolver cr, char shortcut)7025 public static Intent getIntentForShortcut(ContentResolver cr, char shortcut) 7026 { 7027 Intent intent = null; 7028 7029 Cursor c = cr.query(CONTENT_URI, 7030 sIntentProjection, sShortcutSelection, 7031 new String[] { String.valueOf((int) shortcut) }, ORDERING); 7032 // Keep trying until we find a valid shortcut 7033 try { 7034 while (intent == null && c.moveToNext()) { 7035 try { 7036 String intentURI = c.getString(c.getColumnIndexOrThrow(INTENT)); 7037 intent = Intent.parseUri(intentURI, 0); 7038 } catch (java.net.URISyntaxException e) { 7039 // The stored URL is bad... ignore it. 7040 } catch (IllegalArgumentException e) { 7041 // Column not found 7042 Log.w(TAG, "Intent column not found", e); 7043 } 7044 } 7045 } finally { 7046 if (c != null) c.close(); 7047 } 7048 7049 return intent; 7050 } 7051 7052 /** 7053 * Add a new bookmark to the system. 7054 * 7055 * @param cr The ContentResolver to query. 7056 * @param intent The desired target of the bookmark. 7057 * @param title Bookmark title that is shown to the user; null if none 7058 * or it should be resolved to the intent's title. 7059 * @param folder Folder in which to place the bookmark; null if none. 7060 * @param shortcut Shortcut that will invoke the bookmark; 0 if none. If 7061 * this is non-zero and there is an existing bookmark entry 7062 * with this same shortcut, then that existing shortcut is 7063 * cleared (the bookmark is not removed). 7064 * @return The unique content URL for the new bookmark entry. 7065 */ add(ContentResolver cr, Intent intent, String title, String folder, char shortcut, int ordering)7066 public static Uri add(ContentResolver cr, 7067 Intent intent, 7068 String title, 7069 String folder, 7070 char shortcut, 7071 int ordering) 7072 { 7073 // If a shortcut is supplied, and it is already defined for 7074 // another bookmark, then remove the old definition. 7075 if (shortcut != 0) { 7076 cr.delete(CONTENT_URI, sShortcutSelection, 7077 new String[] { String.valueOf((int) shortcut) }); 7078 } 7079 7080 ContentValues values = new ContentValues(); 7081 if (title != null) values.put(TITLE, title); 7082 if (folder != null) values.put(FOLDER, folder); 7083 values.put(INTENT, intent.toUri(0)); 7084 if (shortcut != 0) values.put(SHORTCUT, (int) shortcut); 7085 values.put(ORDERING, ordering); 7086 return cr.insert(CONTENT_URI, values); 7087 } 7088 7089 /** 7090 * Return the folder name as it should be displayed to the user. This 7091 * takes care of localizing special folders. 7092 * 7093 * @param r Resources object for current locale; only need access to 7094 * system resources. 7095 * @param folder The value found in the {@link #FOLDER} column. 7096 * 7097 * @return CharSequence The label for this folder that should be shown 7098 * to the user. 7099 */ getLabelForFolder(Resources r, String folder)7100 public static CharSequence getLabelForFolder(Resources r, String folder) { 7101 return folder; 7102 } 7103 7104 /** 7105 * Return the title as it should be displayed to the user. This takes 7106 * care of localizing bookmarks that point to activities. 7107 * 7108 * @param context A context. 7109 * @param cursor A cursor pointing to the row whose title should be 7110 * returned. The cursor must contain at least the {@link #TITLE} 7111 * and {@link #INTENT} columns. 7112 * @return A title that is localized and can be displayed to the user, 7113 * or the empty string if one could not be found. 7114 */ getTitle(Context context, Cursor cursor)7115 public static CharSequence getTitle(Context context, Cursor cursor) { 7116 int titleColumn = cursor.getColumnIndex(TITLE); 7117 int intentColumn = cursor.getColumnIndex(INTENT); 7118 if (titleColumn == -1 || intentColumn == -1) { 7119 throw new IllegalArgumentException( 7120 "The cursor must contain the TITLE and INTENT columns."); 7121 } 7122 7123 String title = cursor.getString(titleColumn); 7124 if (!TextUtils.isEmpty(title)) { 7125 return title; 7126 } 7127 7128 String intentUri = cursor.getString(intentColumn); 7129 if (TextUtils.isEmpty(intentUri)) { 7130 return ""; 7131 } 7132 7133 Intent intent; 7134 try { 7135 intent = Intent.parseUri(intentUri, 0); 7136 } catch (URISyntaxException e) { 7137 return ""; 7138 } 7139 7140 PackageManager packageManager = context.getPackageManager(); 7141 ResolveInfo info = packageManager.resolveActivity(intent, 0); 7142 return info != null ? info.loadLabel(packageManager) : ""; 7143 } 7144 } 7145 7146 /** 7147 * Returns the device ID that we should use when connecting to the mobile gtalk server. 7148 * This is a string like "android-0x1242", where the hex string is the Android ID obtained 7149 * from the GoogleLoginService. 7150 * 7151 * @param androidId The Android ID for this device. 7152 * @return The device ID that should be used when connecting to the mobile gtalk server. 7153 * @hide 7154 */ getGTalkDeviceId(long androidId)7155 public static String getGTalkDeviceId(long androidId) { 7156 return "android-" + Long.toHexString(androidId); 7157 } 7158 } 7159