use of android.database.sqlite.SQLiteStatement in project android_frameworks_base by DirtyUnicorns.
the class DatabaseHelper method onUpgrade.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
Log.w(TAG, "Upgrading settings database from version " + oldVersion + " to " + currentVersion);
int upgradeVersion = oldVersion;
if (upgradeVersion == 20) {
/*
* Version 21 is part of the volume control refresh. There is no
* longer a UI-visible for setting notification vibrate on/off (in
* our design), but the functionality still exists. Force the
* notification vibrate to on.
*/
loadVibrateSetting(db, true);
upgradeVersion = 21;
}
if (upgradeVersion < 22) {
upgradeVersion = 22;
// Upgrade the lock gesture storage location and format
upgradeLockPatternLocation(db);
}
if (upgradeVersion < 23) {
db.execSQL("UPDATE favorites SET iconResource=0 WHERE iconType=0");
upgradeVersion = 23;
}
if (upgradeVersion == 23) {
db.beginTransaction();
try {
db.execSQL("ALTER TABLE favorites ADD spanX INTEGER");
db.execSQL("ALTER TABLE favorites ADD spanY INTEGER");
// Shortcuts, applications, folders
db.execSQL("UPDATE favorites SET spanX=1, spanY=1 WHERE itemType<=0");
// Photo frames, clocks
db.execSQL("UPDATE favorites SET spanX=2, spanY=2 WHERE itemType=1000 or itemType=1002");
// Search boxes
db.execSQL("UPDATE favorites SET spanX=4, spanY=1 WHERE itemType=1001");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 24;
}
if (upgradeVersion == 24) {
db.beginTransaction();
try {
// The value of the constants for preferring wifi or preferring mobile have been
// swapped, so reload the default.
db.execSQL("DELETE FROM system WHERE name='network_preference'");
db.execSQL("INSERT INTO system ('name', 'value') values ('network_preference', '" + ConnectivityManager.DEFAULT_NETWORK_PREFERENCE + "')");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 25;
}
if (upgradeVersion == 25) {
db.beginTransaction();
try {
db.execSQL("ALTER TABLE favorites ADD uri TEXT");
db.execSQL("ALTER TABLE favorites ADD displayMode INTEGER");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 26;
}
if (upgradeVersion == 26) {
// This introduces the new secure settings table.
db.beginTransaction();
try {
createSecureTable(db);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 27;
}
if (upgradeVersion == 27) {
String[] settingsToMove = { Settings.Secure.ADB_ENABLED, Settings.Secure.ANDROID_ID, Settings.Secure.BLUETOOTH_ON, Settings.Secure.DATA_ROAMING, Settings.Secure.DEVICE_PROVISIONED, Settings.Secure.HTTP_PROXY, Settings.Secure.INSTALL_NON_MARKET_APPS, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, Settings.Secure.LOGGING_ID, Settings.Secure.NETWORK_PREFERENCE, Settings.Secure.PARENTAL_CONTROL_ENABLED, Settings.Secure.PARENTAL_CONTROL_LAST_UPDATE, Settings.Secure.PARENTAL_CONTROL_REDIRECT_URL, Settings.Secure.SETTINGS_CLASSNAME, Settings.Secure.USB_MASS_STORAGE_ENABLED, Settings.Secure.USE_GOOGLE_MAIL, Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, Settings.Secure.WIFI_ON, Settings.Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE, Settings.Secure.WIFI_WATCHDOG_AP_COUNT, Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS, Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED, Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS, Settings.Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT, Settings.Secure.WIFI_WATCHDOG_MAX_AP_CHECKS, Settings.Secure.WIFI_WATCHDOG_ON, Settings.Secure.WIFI_WATCHDOG_PING_COUNT, Settings.Secure.WIFI_WATCHDOG_PING_DELAY_MS, Settings.Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS };
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false);
upgradeVersion = 28;
}
if (upgradeVersion == 28 || upgradeVersion == 29) {
// Note: The upgrade to 28 was flawed since it didn't delete the old
// setting first before inserting. Combining 28 and 29 with the
// fixed version.
// This upgrade adds the STREAM_NOTIFICATION type to the list of
// types affected by ringer modes (silent, vibrate, etc.)
db.beginTransaction();
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
int newValue = (1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) | (1 << AudioManager.STREAM_SYSTEM);
db.execSQL("INSERT INTO system ('name', 'value') values ('" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" + String.valueOf(newValue) + "')");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 30;
}
if (upgradeVersion == 30) {
/*
* Upgrade 31 clears the title for all quick launch shortcuts so the
* activities' titles will be resolved at display time. Also, the
* folder is changed to '@quicklaunch'.
*/
db.beginTransaction();
try {
db.execSQL("UPDATE bookmarks SET folder = '@quicklaunch'");
db.execSQL("UPDATE bookmarks SET title = ''");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 31;
}
if (upgradeVersion == 31) {
/*
* Animations are now managed in preferences, and may be
* enabled or disabled based on product resources.
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.WINDOW_ANIMATION_SCALE + "'");
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.TRANSITION_ANIMATION_SCALE + "'");
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadDefaultAnimationSettings(stmt);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 32;
}
if (upgradeVersion == 32) {
// The Wi-Fi watchdog SSID list is now seeded with the value of
// the property ro.com.android.wifi-watchlist
String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist");
if (!TextUtils.isEmpty(wifiWatchList)) {
db.beginTransaction();
try {
db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + Settings.Secure.WIFI_WATCHDOG_WATCH_LIST + "','" + wifiWatchList + "');");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 33;
}
if (upgradeVersion == 33) {
// Set the default zoom controls to: tap-twice to bring up +/-
db.beginTransaction();
try {
db.execSQL("INSERT INTO system(name,value) values('zoom','2');");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 34;
}
if (upgradeVersion == 34) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);");
loadSecure35Settings(stmt);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 35;
}
// and we intentionally do nothing from 35 to 36 now.
if (upgradeVersion == 35) {
upgradeVersion = 36;
}
if (upgradeVersion == 36) {
// This upgrade adds the STREAM_SYSTEM_ENFORCED type to the list of
// types affected by ringer modes (silent, vibrate, etc.)
db.beginTransaction();
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
int newValue = (1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) | (1 << AudioManager.STREAM_SYSTEM) | (1 << AudioManager.STREAM_SYSTEM_ENFORCED);
db.execSQL("INSERT INTO system ('name', 'value') values ('" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" + String.valueOf(newValue) + "')");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 37;
}
if (upgradeVersion == 37) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");
loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, R.string.airplane_mode_toggleable_radios);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 38;
}
if (upgradeVersion == 38) {
db.beginTransaction();
try {
String value = mContext.getResources().getBoolean(R.bool.assisted_gps_enabled) ? "1" : "0";
db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + Settings.Global.ASSISTED_GPS_ENABLED + "','" + value + "');");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 39;
}
if (upgradeVersion == 39) {
upgradeAutoBrightness(db);
upgradeVersion = 40;
}
if (upgradeVersion == 40) {
/*
* All animations are now turned on by default!
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.WINDOW_ANIMATION_SCALE + "'");
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.TRANSITION_ANIMATION_SCALE + "'");
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadDefaultAnimationSettings(stmt);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 41;
}
if (upgradeVersion == 41) {
/*
* Initialize newly public haptic feedback setting
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.HAPTIC_FEEDBACK_ENABLED + "'");
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadDefaultHapticSettings(stmt);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 42;
}
if (upgradeVersion == 42) {
/*
* Initialize new notification pulse setting
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, R.bool.def_notification_pulse);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 43;
}
if (upgradeVersion == 43) {
/*
* This upgrade stores bluetooth volume separately from voice volume
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 44;
}
if (upgradeVersion == 44) {
/*
* Gservices was moved into vendor/google.
*/
db.execSQL("DROP TABLE IF EXISTS gservices");
db.execSQL("DROP INDEX IF EXISTS gservicesIndex1");
upgradeVersion = 45;
}
if (upgradeVersion == 45) {
/*
* New settings for MountService
*/
db.beginTransaction();
try {
db.execSQL("INSERT INTO secure(name,value) values('" + Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND + "','1');");
db.execSQL("INSERT INTO secure(name,value) values('" + Settings.Secure.MOUNT_UMS_AUTOSTART + "','0');");
db.execSQL("INSERT INTO secure(name,value) values('" + Settings.Secure.MOUNT_UMS_PROMPT + "','1');");
db.execSQL("INSERT INTO secure(name,value) values('" + Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED + "','1');");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 46;
}
if (upgradeVersion == 46) {
/*
* The password mode constants have changed; reset back to no
* password.
*/
db.beginTransaction();
try {
db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 47;
}
if (upgradeVersion == 47) {
/*
* The password mode constants have changed again; reset back to no
* password.
*/
db.beginTransaction();
try {
db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 48;
}
if (upgradeVersion == 48) {
/*
* Default recognition service no longer initialized here,
* moved to RecognitionManagerService.
*/
upgradeVersion = 49;
}
if (upgradeVersion == 49) {
/*
* New settings for new user interface noises.
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadUISoundEffectsSettings(stmt);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 50;
}
if (upgradeVersion == 50) {
/*
* Install location no longer initiated here.
*/
upgradeVersion = 51;
}
if (upgradeVersion == 51) {
/* Move the lockscreen related settings to Secure, including some private ones. */
String[] settingsToMove = { Secure.LOCK_PATTERN_ENABLED, Secure.LOCK_PATTERN_VISIBLE, Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, "lockscreen.password_type", "lockscreen.lockoutattemptdeadline", "lockscreen.patterneverchosen", "lock_pattern_autolock", "lockscreen.lockedoutpermanently", "lockscreen.password_salt" };
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false);
upgradeVersion = 52;
}
if (upgradeVersion == 52) {
// new vibration/silent mode settings
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, R.bool.def_vibrate_in_silent);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 53;
}
if (upgradeVersion == 53) {
/*
* New settings for set install location UI no longer initiated here.
*/
upgradeVersion = 54;
}
if (upgradeVersion == 54) {
/*
* Update the screen timeout value if set to never
*/
db.beginTransaction();
try {
upgradeScreenTimeoutFromNever(db);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 55;
}
if (upgradeVersion == 55) {
/* Move the install location settings. */
String[] settingsToMove = { Global.SET_INSTALL_LOCATION, Global.DEFAULT_INSTALL_LOCATION };
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, settingsToMove, false);
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Global.SET_INSTALL_LOCATION, 0);
loadSetting(stmt, Global.DEFAULT_INSTALL_LOCATION, PackageHelper.APP_INSTALL_AUTO);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 56;
}
if (upgradeVersion == 56) {
/*
* Add Bluetooth to list of toggleable radios in airplane mode
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'");
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");
loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, R.string.airplane_mode_toggleable_radios);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 57;
}
if (upgradeVersion == 57) {
/*
* New settings to:
* 1. Enable injection of accessibility scripts in WebViews.
* 2. Define the key bindings for traversing web content in WebViews.
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, R.bool.def_accessibility_script_injection);
stmt.close();
stmt = db.compileStatement("INSERT INTO secure(name,value)" + " VALUES(?,?);");
loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, R.string.def_accessibility_web_content_key_bindings);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 58;
}
if (upgradeVersion == 58) {
/* Add default for new Auto Time Zone */
int autoTimeValue = getIntValueFromSystem(db, Settings.System.AUTO_TIME, 0);
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.System.AUTO_TIME_ZONE, // Sync timezone to NITZ if auto_time was enabled
autoTimeValue);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 59;
}
if (upgradeVersion == 59) {
// Persistence for the rotation lock feature.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.System.USER_ROTATION, // should be zero degrees
R.integer.def_user_rotation);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 60;
}
if (upgradeVersion == 60) {
// Don't do this for upgrades from Gingerbread
// Were only required for intra-Honeycomb upgrades for testing
// upgradeScreenTimeout(db);
upgradeVersion = 61;
}
if (upgradeVersion == 61) {
// Don't do this for upgrades from Gingerbread
// Were only required for intra-Honeycomb upgrades for testing
// upgradeScreenTimeout(db);
upgradeVersion = 62;
}
// Change the default for screen auto-brightness mode
if (upgradeVersion == 62) {
// Don't do this for upgrades from Gingerbread
// Were only required for intra-Honeycomb upgrades for testing
// upgradeAutoBrightness(db);
upgradeVersion = 63;
}
if (upgradeVersion == 63) {
// This upgrade adds the STREAM_MUSIC type to the list of
// types affected by ringer modes (silent, vibrate, etc.)
db.beginTransaction();
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
int newValue = (1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) | (1 << AudioManager.STREAM_SYSTEM) | (1 << AudioManager.STREAM_SYSTEM_ENFORCED) | (1 << AudioManager.STREAM_MUSIC);
db.execSQL("INSERT INTO system ('name', 'value') values ('" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" + String.valueOf(newValue) + "')");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 64;
}
if (upgradeVersion == 64) {
// New setting to configure the long press timeout.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO secure(name,value)" + " VALUES(?,?);");
loadIntegerSetting(stmt, Settings.Secure.LONG_PRESS_TIMEOUT, R.integer.def_long_press_timeout_millis);
stmt.close();
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 65;
}
if (upgradeVersion == 65) {
/*
* Animations are removed from Settings. Turned on by default
*/
db.beginTransaction();
SQLiteStatement stmt = null;
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.WINDOW_ANIMATION_SCALE + "'");
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.TRANSITION_ANIMATION_SCALE + "'");
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadDefaultAnimationSettings(stmt);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 66;
}
if (upgradeVersion == 66) {
// This upgrade makes sure that MODE_RINGER_STREAMS_AFFECTED is set
// according to device voice capability
db.beginTransaction();
try {
int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) | (1 << AudioManager.STREAM_SYSTEM) | (1 << AudioManager.STREAM_SYSTEM_ENFORCED);
if (!mContext.getResources().getBoolean(com.android.internal.R.bool.config_voice_capable)) {
ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC);
}
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
db.execSQL("INSERT INTO system ('name', 'value') values ('" + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" + String.valueOf(ringerModeAffectedStreams) + "')");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 67;
}
if (upgradeVersion == 67) {
// New setting to enable touch exploration.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_ENABLED, R.bool.def_touch_exploration_enabled);
stmt.close();
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 68;
}
if (upgradeVersion == 68) {
// Enable all system sounds by default
db.beginTransaction();
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.NOTIFICATIONS_USE_RING_VOLUME + "'");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 69;
}
if (upgradeVersion == 69) {
// Add RADIO_NFC to AIRPLANE_MODE_RADIO and AIRPLANE_MODE_TOGGLEABLE_RADIOS
String airplaneRadios = mContext.getResources().getString(R.string.def_airplane_mode_radios);
String toggleableRadios = mContext.getResources().getString(R.string.airplane_mode_toggleable_radios);
db.beginTransaction();
try {
db.execSQL("UPDATE system SET value='" + airplaneRadios + "' " + "WHERE name='" + Settings.System.AIRPLANE_MODE_RADIOS + "'");
db.execSQL("UPDATE system SET value='" + toggleableRadios + "' " + "WHERE name='" + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 70;
}
if (upgradeVersion == 70) {
// Update all built-in bookmarks. Some of the package names have changed.
loadBookmarks(db);
upgradeVersion = 71;
}
if (upgradeVersion == 71) {
// New setting to specify whether to speak passwords in accessibility mode.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, R.bool.def_accessibility_speak_password);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 72;
}
if (upgradeVersion == 72) {
// update vibration settings
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, R.bool.def_vibrate_in_silent);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 73;
}
if (upgradeVersion == 73) {
upgradeVibrateSettingFromNone(db);
upgradeVersion = 74;
}
if (upgradeVersion == 74) {
// URL from which WebView loads a JavaScript based screen-reader.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);");
loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, R.string.def_accessibility_screen_reader_url);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 75;
}
if (upgradeVersion == 75) {
db.beginTransaction();
SQLiteStatement stmt = null;
Cursor c = null;
try {
c = db.query(TABLE_SECURE, new String[] { "_id", "value" }, "name='lockscreen.disabled'", null, null, null, null);
// only set default if it has not yet been set
if (c == null || c.getCount() == 0) {
stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, R.bool.def_lockscreen_disabled);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (c != null)
c.close();
if (stmt != null)
stmt.close();
}
upgradeVersion = 76;
}
if (upgradeVersion == 76) {
// Removed VIBRATE_IN_SILENT setting
db.beginTransaction();
try {
db.execSQL("DELETE FROM system WHERE name='" + Settings.System.VIBRATE_IN_SILENT + "'");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 77;
}
if (upgradeVersion == 77) {
// Introduce "vibrate when ringing" setting
loadVibrateWhenRingingSetting(db);
upgradeVersion = 78;
}
if (upgradeVersion == 78) {
// The JavaScript based screen-reader URL changes in JellyBean.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" + " VALUES(?,?);");
loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, R.string.def_accessibility_screen_reader_url);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 79;
}
if (upgradeVersion == 79) {
// Before touch exploration was a global setting controlled by the user
// via the UI. However, if the enabled accessibility services do not
// handle touch exploration mode, enabling it makes no sense. Therefore,
// now the services request touch exploration mode and the user is
// presented with a dialog to allow that and if she does we store that
// in the database. As a result of this change a user that has enabled
// accessibility, touch exploration, and some accessibility services
// may lose touch exploration state, thus rendering the device useless
// unless sighted help is provided, since the enabled service(s) are
// not in the list of services to which the user granted a permission
// to put the device in touch explore mode. Here we are allowing all
// enabled accessibility services to toggle touch exploration provided
// accessibility and touch exploration are enabled and no services can
// toggle touch exploration. Note that the user has already manually
// enabled the services and touch exploration which means the she has
// given consent to have these services work in touch exploration mode.
final boolean accessibilityEnabled = getIntValueFromTable(db, TABLE_SECURE, Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1;
final boolean touchExplorationEnabled = getIntValueFromTable(db, TABLE_SECURE, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0) == 1;
if (accessibilityEnabled && touchExplorationEnabled) {
String enabledServices = getStringValueFromTable(db, TABLE_SECURE, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, "");
String touchExplorationGrantedServices = getStringValueFromTable(db, TABLE_SECURE, Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, "");
if (TextUtils.isEmpty(touchExplorationGrantedServices) && !TextUtils.isEmpty(enabledServices)) {
SQLiteStatement stmt = null;
try {
db.beginTransaction();
stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, enabledServices);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
}
upgradeVersion = 80;
}
if (upgradeVersion == 80) {
// update screensaver settings
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ENABLED, com.android.internal.R.bool.config_dreamsEnabledByDefault);
loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault);
loadBooleanSetting(stmt, Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault);
loadStringSetting(stmt, Settings.Secure.SCREENSAVER_COMPONENTS, com.android.internal.R.string.config_dreamsDefaultComponent);
loadStringSetting(stmt, Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT, com.android.internal.R.string.config_dreamsDefaultComponent);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 81;
}
if (upgradeVersion == 81) {
// Add package verification setting
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE, R.bool.def_package_verifier_enable);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 82;
}
if (upgradeVersion == 82) {
// Move to per-user settings dbs
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
// Migrate now-global settings. Note that this happens before
// new users can be created.
createGlobalTable(db);
String[] settingsToMove = setToStringArray(SettingsProvider.sSystemMovedToGlobalSettings);
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, false);
settingsToMove = setToStringArray(SettingsProvider.sSecureMovedToGlobalSettings);
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, false);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 83;
}
if (upgradeVersion == 83) {
// 1. Setting whether screen magnification is enabled.
// 2. Setting for screen magnification scale.
// 3. Setting for screen magnification auto update.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, R.bool.def_accessibility_display_magnification_enabled);
stmt.close();
stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);");
loadFractionSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, R.fraction.def_accessibility_display_magnification_scale, 1);
stmt.close();
stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, R.bool.def_accessibility_display_magnification_auto_update);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 84;
}
if (upgradeVersion == 84) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
// Patch up the slightly-wrong key migration from 82 -> 83 for those
// devices that missed it, ignoring if the move is redundant
String[] settingsToMove = { Settings.Secure.ADB_ENABLED, Settings.Secure.BLUETOOTH_ON, Settings.Secure.DATA_ROAMING, Settings.Secure.DEVICE_PROVISIONED, Settings.Secure.INSTALL_NON_MARKET_APPS, Settings.Secure.USB_MASS_STORAGE_ENABLED };
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 85;
}
if (upgradeVersion == 85) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
// Fix up the migration, ignoring already-migrated elements, to snap up to
// date with new changes to the set of global versus system/secure settings
String[] settingsToMove = { Settings.System.STAY_ON_WHILE_PLUGGED_IN };
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 86;
}
if (upgradeVersion == 86) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = { Settings.Global.PACKAGE_VERIFIER_ENABLE, Settings.Global.PACKAGE_VERIFIER_TIMEOUT, Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE };
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 87;
}
if (upgradeVersion == 87) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = { Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS, Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS, Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS };
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 88;
}
if (upgradeVersion == 88) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = { Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD, Settings.Global.BATTERY_DISCHARGE_THRESHOLD, Settings.Global.SEND_ACTION_APP_ERROR, Settings.Global.DROPBOX_AGE_SECONDS, Settings.Global.DROPBOX_MAX_FILES, Settings.Global.DROPBOX_QUOTA_KB, Settings.Global.DROPBOX_QUOTA_PERCENT, Settings.Global.DROPBOX_RESERVE_PERCENT, Settings.Global.DROPBOX_TAG_PREFIX, Settings.Global.ERROR_LOGCAT_PREFIX, Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL, Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD, Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE, Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES, Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES, Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS, Settings.Global.CONNECTIVITY_CHANGE_DELAY, Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, Settings.Global.CAPTIVE_PORTAL_SERVER, Settings.Global.NSD_ON, Settings.Global.SET_INSTALL_LOCATION, Settings.Global.DEFAULT_INSTALL_LOCATION, Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY, Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY, Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT, Settings.Global.HTTP_PROXY, Settings.Global.GLOBAL_HTTP_PROXY_HOST, Settings.Global.GLOBAL_HTTP_PROXY_PORT, Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST, Settings.Global.SET_GLOBAL_HTTP_PROXY, Settings.Global.DEFAULT_DNS_SERVER };
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 89;
}
if (upgradeVersion == 89) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] prefixesToMove = { Settings.Global.BLUETOOTH_HEADSET_PRIORITY_PREFIX, Settings.Global.BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX, Settings.Global.BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX };
movePrefixedSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, prefixesToMove);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 90;
}
if (upgradeVersion == 90) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] systemToGlobal = { Settings.Global.WINDOW_ANIMATION_SCALE, Settings.Global.TRANSITION_ANIMATION_SCALE, Settings.Global.ANIMATOR_DURATION_SCALE, Settings.Global.FANCY_IME_ANIMATIONS, Settings.Global.COMPATIBILITY_MODE, Settings.Global.EMERGENCY_TONE, Settings.Global.CALL_AUTO_RETRY, Settings.Global.DEBUG_APP, Settings.Global.WAIT_FOR_DEBUGGER, Settings.Global.ALWAYS_FINISH_ACTIVITIES };
String[] secureToGlobal = { Settings.Global.PREFERRED_NETWORK_MODE, Settings.Global.CDMA_SUBSCRIPTION_MODE };
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, systemToGlobal, true);
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, secureToGlobal, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 91;
}
if (upgradeVersion == 91) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
// Move ringer mode from system to global settings
String[] settingsToMove = { Settings.Global.MODE_RINGER };
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 92;
}
if (upgradeVersion == 92) {
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);");
if (mUserHandle == UserHandle.USER_SYSTEM) {
// consider existing primary users to have made it through user setup
// if the globally-scoped device-provisioned bit is set
// (indicating they already made it through setup as primary)
int deviceProvisioned = getIntValueFromTable(db, TABLE_GLOBAL, Settings.Global.DEVICE_PROVISIONED, 0);
loadSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, deviceProvisioned);
} else {
// otherwise use the default
loadBooleanSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE, R.bool.def_user_setup_complete);
}
} finally {
if (stmt != null)
stmt.close();
}
upgradeVersion = 93;
}
if (upgradeVersion == 93) {
// Redo this step, since somehow it didn't work the first time for some users
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
// Migrate now-global settings
String[] settingsToMove = setToStringArray(SettingsProvider.sSystemMovedToGlobalSettings);
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_GLOBAL, settingsToMove, true);
settingsToMove = setToStringArray(SettingsProvider.sSecureMovedToGlobalSettings);
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 94;
}
if (upgradeVersion == 94) {
// Add wireless charging started sound setting
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" + " VALUES(?,?);");
loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, R.string.def_wireless_charging_started_sound);
loadBooleanSetting(stmt, Settings.Global.POWER_NOTIFICATIONS_ENABLED, R.bool.def_power_notifications_enabled);
loadBooleanSetting(stmt, Settings.Global.POWER_NOTIFICATIONS_VIBRATE, R.bool.def_power_notifications_vibrate);
loadBooleanSetting(stmt, Settings.Global.POWER_NOTIFICATION_CUSTOM_RINGTONE, R.bool.def_power_notifications_custom_ringtone);
loadStringSetting(stmt, Settings.Global.POWER_NOTIFICATIONS_RINGTONE, R.string.def_power_notifications_ringtone);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 95;
}
if (upgradeVersion == 95) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
try {
String[] settingsToMove = { Settings.Global.BUGREPORT_IN_POWER_MENU };
moveSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, settingsToMove, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
upgradeVersion = 96;
}
if (upgradeVersion == 96) {
// NOP bump due to a reverted change that some people got on upgrade.
upgradeVersion = 97;
}
if (upgradeVersion == 97) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" + " VALUES(?,?);");
loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT, R.integer.def_low_battery_sound_timeout);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 98;
}
if (upgradeVersion == 98) {
// no-op; LOCK_SCREEN_SHOW_NOTIFICATIONS now handled in version 106
upgradeVersion = 99;
}
if (upgradeVersion == 99) {
// no-op; HEADS_UP_NOTIFICATIONS_ENABLED now handled in version 100
upgradeVersion = 100;
}
if (upgradeVersion == 100) {
// note: LOCK_SCREEN_SHOW_NOTIFICATIONS now handled in version 106
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" + " VALUES(?,?);");
loadIntegerSetting(stmt, Global.HEADS_UP_NOTIFICATIONS_ENABLED, R.integer.def_heads_up_enabled);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 101;
}
if (upgradeVersion == 101) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName());
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 102;
}
if (upgradeVersion == 102) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
// than device-global.
if (mUserHandle == UserHandle.USER_SYSTEM) {
// In the owner user, the global table exists so we can migrate the
// entry from there to the secure table, preserving its value.
String[] globalToSecure = { Settings.Secure.INSTALL_NON_MARKET_APPS };
moveSettingsToNewTable(db, TABLE_GLOBAL, TABLE_SECURE, globalToSecure, true);
} else {
// Secondary users' dbs don't have the global table, so institute the
// default.
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, R.bool.def_install_non_market_apps);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 103;
}
if (upgradeVersion == 103) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.Secure.WAKE_GESTURE_ENABLED, R.bool.def_wake_gesture_enabled);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 104;
}
if (upgradeVersion < 105) {
// No-op: GUEST_USER_ENABLED setting was removed
upgradeVersion = 105;
}
if (upgradeVersion < 106) {
// LOCK_SCREEN_SHOW_NOTIFICATIONS is now per-user.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);");
loadIntegerSetting(stmt, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, R.integer.def_lock_screen_show_notifications);
if (mUserHandle == UserHandle.USER_SYSTEM) {
final int oldShow = getIntValueFromTable(db, TABLE_GLOBAL, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, -1);
if (oldShow >= 0) {
// overwrite the default with whatever you had
loadSetting(stmt, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, oldShow);
final SQLiteStatement deleteStmt = db.compileStatement("DELETE FROM global WHERE name=?");
deleteStmt.bindString(1, Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
deleteStmt.execute();
}
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 106;
}
if (upgradeVersion < 107) {
// Add trusted sound setting
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" + " VALUES(?,?);");
loadStringSetting(stmt, Settings.Global.TRUSTED_SOUND, R.string.def_trusted_sound);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 107;
}
if (upgradeVersion < 108) {
// Reset the auto-brightness setting to default since the behavior
// of the feature is now quite different and is being presented to
// the user in a new way as "adaptive brightness".
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, R.bool.def_screen_brightness_automatic_mode);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 108;
}
if (upgradeVersion < 109) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, R.bool.def_lock_screen_allow_private_notifications);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 109;
}
if (upgradeVersion < 110) {
// The SIP_CALL_OPTIONS value SIP_ASK_EACH_TIME is being deprecated.
// If the SIP_CALL_OPTIONS setting is set to SIP_ASK_EACH_TIME, default to
// SIP_ADDRESS_ONLY.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("UPDATE system SET value = ? " + "WHERE name = ? AND value = ?;");
stmt.bindString(1, Settings.System.SIP_ADDRESS_ONLY);
stmt.bindString(2, Settings.System.SIP_CALL_OPTIONS);
stmt.bindString(3, Settings.System.SIP_ASK_ME_EACH_TIME);
stmt.execute();
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 110;
}
if (upgradeVersion < 111) {
// reset ringer mode, so it doesn't force zen mode to follow
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.Global.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 111;
}
if (upgradeVersion < 112) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
// When device name was added, we went with Manufacturer + Model, device name should
// actually be Model only.
// Update device name to Model if it wasn't modified by user.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("UPDATE global SET value = ? " + " WHERE name = ? AND value = ?");
// new default device name
stmt.bindString(1, getDefaultDeviceName());
stmt.bindString(2, Settings.Global.DEVICE_NAME);
// old default device name
stmt.bindString(3, getOldDefaultDeviceName());
stmt.execute();
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 112;
}
if (upgradeVersion < 113) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);");
loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT, R.integer.def_sleep_timeout);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 113;
}
if (upgradeVersion < 115) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Global.THEATER_MODE_ON, R.bool.def_theater_mode_on);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 115;
}
if (upgradeVersion < 116) {
if (mUserHandle == UserHandle.USER_SYSTEM) {
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED, ImsConfig.FeatureValueConstants.ON);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
}
upgradeVersion = 116;
}
if (upgradeVersion < 117) {
db.beginTransaction();
try {
String[] systemToSecure = { Settings.Secure.LOCK_TO_APP_EXIT_LOCKED };
moveSettingsToNewTable(db, TABLE_SYSTEM, TABLE_SECURE, systemToSecure, true);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
upgradeVersion = 117;
}
if (upgradeVersion < 118) {
// Reset rotation-lock-for-accessibility on upgrade, since it now hides the display
// setting.
db.beginTransaction();
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, 0);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
if (stmt != null)
stmt.close();
}
upgradeVersion = 118;
}
if (upgradeVersion != currentVersion) {
recreateDatabase(db, oldVersion, upgradeVersion, currentVersion);
}
}
use of android.database.sqlite.SQLiteStatement in project android_frameworks_base by DirtyUnicorns.
the class DatabaseHelper method loadVolumeLevels.
/**
* Loads the default volume levels. It is actually inserting the index of
* the volume array for each of the volume controls.
*
* @param db the database to insert the volume levels into
*/
private void loadVolumeLevels(SQLiteDatabase db) {
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.System.VOLUME_MUSIC, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_MUSIC));
loadSetting(stmt, Settings.System.VOLUME_RING, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_RING));
loadSetting(stmt, Settings.System.VOLUME_SYSTEM, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM));
loadSetting(stmt, Settings.System.VOLUME_VOICE, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL));
loadSetting(stmt, Settings.System.VOLUME_ALARM, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_ALARM));
loadSetting(stmt, Settings.System.VOLUME_NOTIFICATION, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION));
loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO, AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));
// By default:
// - ringtones, notification, system and music streams are affected by ringer mode
// on non voice capable devices (tablets)
// - ringtones, notification and system streams are affected by ringer mode
// on voice capable devices (phones)
int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) | (1 << AudioManager.STREAM_SYSTEM) | (1 << AudioManager.STREAM_SYSTEM_ENFORCED);
if (!mContext.getResources().getBoolean(com.android.internal.R.bool.config_voice_capable)) {
ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC);
}
loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED, ringerModeAffectedStreams);
loadSetting(stmt, Settings.System.MUTE_STREAMS_AFFECTED, AudioSystem.DEFAULT_MUTE_STREAMS_AFFECTED);
} finally {
if (stmt != null)
stmt.close();
}
loadVibrateWhenRingingSetting(db);
}
use of android.database.sqlite.SQLiteStatement in project android_frameworks_base by DirtyUnicorns.
the class DatabaseHelper method loadSystemSettings.
private void loadSystemSettings(SQLiteDatabase db) {
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");
loadBooleanSetting(stmt, Settings.System.DIM_SCREEN, R.bool.def_dim_screen);
loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, R.integer.def_screen_off_timeout);
// Set default cdma DTMF type
loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0);
// Set default hearing aid
loadSetting(stmt, Settings.System.HEARING_AID, 0);
// Set default tty mode
loadSetting(stmt, Settings.System.TTY_MODE, 0);
loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS, R.integer.def_screen_brightness);
loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, R.bool.def_screen_brightness_automatic_mode);
loadDefaultAnimationSettings(stmt);
loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION, R.bool.def_accelerometer_rotation);
loadDefaultHapticSettings(stmt);
loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, R.bool.def_notification_pulse);
loadUISoundEffectsSettings(stmt);
loadIntegerSetting(stmt, Settings.System.POINTER_SPEED, R.integer.def_pointer_speed);
/*
* IMPORTANT: Do not add any more upgrade steps here as the global,
* secure, and system settings are no longer stored in a database
* but are kept in memory and persisted to XML.
*
* See: SettingsProvider.UpgradeController#onUpgradeLocked
*/
} finally {
if (stmt != null)
stmt.close();
}
}
use of android.database.sqlite.SQLiteStatement in project android_frameworks_base by DirtyUnicorns.
the class DatabaseHelper method loadGlobalSettings.
private void loadGlobalSettings(SQLiteDatabase db) {
SQLiteStatement stmt = null;
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" + " VALUES(?,?);");
// --- Previously in 'system'
loadBooleanSetting(stmt, Settings.Global.AIRPLANE_MODE_ON, R.bool.def_airplane_mode_on);
loadBooleanSetting(stmt, Settings.Global.THEATER_MODE_ON, R.bool.def_theater_mode_on);
loadStringSetting(stmt, Settings.Global.AIRPLANE_MODE_RADIOS, R.string.def_airplane_mode_radios);
loadStringSetting(stmt, Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, R.string.airplane_mode_toggleable_radios);
loadBooleanSetting(stmt, Settings.Global.ASSISTED_GPS_ENABLED, R.bool.assisted_gps_enabled);
loadBooleanSetting(stmt, Settings.Global.AUTO_TIME, // Sync time to NITZ
R.bool.def_auto_time);
loadBooleanSetting(stmt, Settings.Global.AUTO_TIME_ZONE, // Sync timezone to NITZ
R.bool.def_auto_time_zone);
loadSetting(stmt, Settings.Global.STAY_ON_WHILE_PLUGGED_IN, ("1".equals(SystemProperties.get("ro.kernel.qemu")) || mContext.getResources().getBoolean(R.bool.def_stay_on_while_plugged_in)) ? 1 : 0);
loadIntegerSetting(stmt, Settings.Global.WIFI_SLEEP_POLICY, R.integer.def_wifi_sleep_policy);
loadSetting(stmt, Settings.Global.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL);
// --- Previously in 'secure'
loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE, R.bool.def_package_verifier_enable);
loadBooleanSetting(stmt, Settings.Global.WIFI_ON, R.bool.def_wifi_on);
loadBooleanSetting(stmt, Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, R.bool.def_networks_available_notification_on);
loadBooleanSetting(stmt, Settings.Global.BLUETOOTH_ON, R.bool.def_bluetooth_on);
// Enable or disable Cell Broadcast SMS
loadSetting(stmt, Settings.Global.CDMA_CELL_BROADCAST_SMS, RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
// Data roaming default, based on build
loadSetting(stmt, Settings.Global.DATA_ROAMING, "true".equalsIgnoreCase(SystemProperties.get("ro.com.android.dataroaming", "false")) ? 1 : 0);
loadBooleanSetting(stmt, Settings.Global.DEVICE_PROVISIONED, R.bool.def_device_provisioned);
final int maxBytes = mContext.getResources().getInteger(R.integer.def_download_manager_max_bytes_over_mobile);
if (maxBytes > 0) {
loadSetting(stmt, Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE, Integer.toString(maxBytes));
}
final int recommendedMaxBytes = mContext.getResources().getInteger(R.integer.def_download_manager_recommended_max_bytes_over_mobile);
if (recommendedMaxBytes > 0) {
loadSetting(stmt, Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE, Integer.toString(recommendedMaxBytes));
}
// Mobile Data default, based on build
loadSetting(stmt, Settings.Global.MOBILE_DATA, "true".equalsIgnoreCase(SystemProperties.get("ro.com.android.mobiledata", "true")) ? 1 : 0);
loadBooleanSetting(stmt, Settings.Global.NETSTATS_ENABLED, R.bool.def_netstats_enabled);
loadBooleanSetting(stmt, Settings.Global.USB_MASS_STORAGE_ENABLED, R.bool.def_usb_mass_storage_enabled);
loadIntegerSetting(stmt, Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT, R.integer.def_max_dhcp_retries);
loadBooleanSetting(stmt, Settings.Global.WIFI_DISPLAY_ON, R.bool.def_wifi_display_on);
loadStringSetting(stmt, Settings.Global.LOCK_SOUND, R.string.def_lock_sound);
loadStringSetting(stmt, Settings.Global.UNLOCK_SOUND, R.string.def_unlock_sound);
loadStringSetting(stmt, Settings.Global.TRUSTED_SOUND, R.string.def_trusted_sound);
loadIntegerSetting(stmt, Settings.Global.POWER_SOUNDS_ENABLED, R.integer.def_power_sounds_enabled);
loadStringSetting(stmt, Settings.Global.LOW_BATTERY_SOUND, R.string.def_low_battery_sound);
loadIntegerSetting(stmt, Settings.Global.DOCK_SOUNDS_ENABLED, R.integer.def_dock_sounds_enabled);
loadIntegerSetting(stmt, Settings.Global.DOCK_SOUNDS_ENABLED_WHEN_ACCESSIBILITY, R.integer.def_dock_sounds_enabled_when_accessibility);
loadStringSetting(stmt, Settings.Global.DESK_DOCK_SOUND, R.string.def_desk_dock_sound);
loadStringSetting(stmt, Settings.Global.DESK_UNDOCK_SOUND, R.string.def_desk_undock_sound);
loadStringSetting(stmt, Settings.Global.CAR_DOCK_SOUND, R.string.def_car_dock_sound);
loadStringSetting(stmt, Settings.Global.CAR_UNDOCK_SOUND, R.string.def_car_undock_sound);
loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, R.string.def_wireless_charging_started_sound);
loadIntegerSetting(stmt, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, R.integer.def_dock_audio_media_enabled);
loadSetting(stmt, Settings.Global.SET_INSTALL_LOCATION, 0);
loadSetting(stmt, Settings.Global.DEFAULT_INSTALL_LOCATION, PackageHelper.APP_INSTALL_AUTO);
// Set default cdma emergency tone
loadSetting(stmt, Settings.Global.EMERGENCY_TONE, 0);
// Set default cdma call auto retry
loadSetting(stmt, Settings.Global.CALL_AUTO_RETRY, 0);
// Set the preferred network mode to target desired value or Default
// value defined in RILConstants
int type;
type = RILConstants.PREFERRED_NETWORK_MODE;
loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, type);
// Set the preferred cdma subscription source to target desired value or default
// value defined in CdmaSubscriptionSourceManager
type = SystemProperties.getInt("ro.telephony.default_cdma_sub", CdmaSubscriptionSourceManager.PREFERRED_CDMA_SUBSCRIPTION);
loadSetting(stmt, Settings.Global.CDMA_SUBSCRIPTION_MODE, type);
loadIntegerSetting(stmt, Settings.Global.LOW_BATTERY_SOUND_TIMEOUT, R.integer.def_low_battery_sound_timeout);
loadIntegerSetting(stmt, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, R.integer.def_wifi_scan_always_available);
loadIntegerSetting(stmt, Global.HEADS_UP_NOTIFICATIONS_ENABLED, R.integer.def_heads_up_enabled);
loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName());
loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED, ImsConfig.FeatureValueConstants.ON);
loadIntegerSetting(stmt, Settings.Global.TETHER_DUN_REQUIRED, R.integer.def_tether_dun_required);
/*
* IMPORTANT: Do not add any more upgrade steps here as the global,
* secure, and system settings are no longer stored in a database
* but are kept in memory and persisted to XML.
*
* See: SettingsProvider.UpgradeController#onUpgradeLocked
*/
} finally {
if (stmt != null)
stmt.close();
}
}
use of android.database.sqlite.SQLiteStatement in project android_frameworks_base by AOSPA.
the class DatabaseHelper method upgradeScreenTimeoutFromNever.
private void upgradeScreenTimeoutFromNever(SQLiteDatabase db) {
// See if the timeout is -1 (for "Never").
Cursor c = db.query(TABLE_SYSTEM, new String[] { "_id", "value" }, "name=? AND value=?", new String[] { Settings.System.SCREEN_OFF_TIMEOUT, "-1" }, null, null, null);
SQLiteStatement stmt = null;
if (c.getCount() > 0) {
c.close();
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" + " VALUES(?,?);");
// Set the timeout to 30 minutes in milliseconds
loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, Integer.toString(30 * 60 * 1000));
} finally {
if (stmt != null)
stmt.close();
}
} else {
c.close();
}
}
Aggregations