154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/* 254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * you may not use this file except in compliance with the License. 654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * You may obtain a copy of the License at 754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 1054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * See the License for the specific language governing permissions and 1454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * limitations under the License. 1554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 1654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectpackage com.android.providers.settings; 1854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ComponentName; 2054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.ContentValues; 2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Context; 2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.Intent; 2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.pm.ActivityInfo; 2454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.pm.PackageManager; 25f02811f7853202c0934622702ebb9c82e6ab0592Romain Guyimport android.content.res.XmlResourceParser; 2654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.Cursor; 2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase; 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteOpenHelper; 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteStatement; 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.media.AudioManager; 3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.media.AudioService; 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.net.ConnectivityManager; 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.SystemProperties; 3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.provider.Settings; 35156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasaniimport android.provider.Settings.Secure; 3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.text.TextUtils; 3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Log; 3840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu 39fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.content.PackageHelper; 40fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.telephony.BaseCommands; 41fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.telephony.Phone; 42fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.telephony.RILConstants; 43fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.util.XmlUtils; 44fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.widget.LockPatternUtils; 45fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport com.android.internal.widget.LockPatternView; 46fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne 47fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport org.xmlpull.v1.XmlPullParser; 48fa53d3002fadf8640600c1840962021a821b8baeGilles Debunneimport org.xmlpull.v1.XmlPullParserException; 49fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne 5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.IOException; 5124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackbornimport java.util.HashSet; 5254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.util.List; 5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/** 5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Database helper class for {@link SettingsProvider}. 5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Mostly just has a bit {@link #onCreate} to initialize the database. 5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 58074da8f9aa424b25d84f4e4eb762ca534ea96716James Wylderpublic class DatabaseHelper extends SQLiteOpenHelper { 5954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String TAG = "SettingsProvider"; 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String DATABASE_NAME = "settings.db"; 61f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller 62f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // Please, please please. If you update the database version, check to make sure the 63f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' 64f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // is properly propagated through your change. Not doing so will result in a loss of user 65f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // settings. 668631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov private static final int DATABASE_VERSION = 80; 679bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 6854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Context mContext; 6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 7024117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn private static final HashSet<String> mValidTables = new HashSet<String>(); 7124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 7224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn static { 7324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("system"); 7424117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("secure"); 7524117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("bluetooth_devices"); 7624117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("bookmarks"); 7724117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 7824117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn // These are old. 7924117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("favorites"); 8024117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("gservices"); 8124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("old_favorites"); 8224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn } 8324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 8454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public DatabaseHelper(Context context) { 8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project super(context, DATABASE_NAME, null, DATABASE_VERSION); 8654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mContext = context; 8747847f3f4dcf2a0dbea0bc0e4f02528e21d37a88Jeff Brown setWriteAheadLoggingEnabled(true); 8854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9024117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn public static boolean isValidTable(String name) { 9124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn return mValidTables.contains(name); 9224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn } 9324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 94f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void createSecureTable(SQLiteDatabase db) { 95f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("CREATE TABLE secure (" + 96f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 97f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "name TEXT UNIQUE ON CONFLICT REPLACE," + 98f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project "value TEXT" + 99f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project ");"); 100f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("CREATE INDEX secureIndex1 ON secure (name);"); 101f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 1029bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void onCreate(SQLiteDatabase db) { 10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE TABLE system (" + 10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "name TEXT UNIQUE ON CONFLICT REPLACE," + 10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "value TEXT" + 10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ");"); 11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE INDEX systemIndex1 ON system (name);"); 11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 112f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project createSecureTable(db); 113f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE TABLE bluetooth_devices (" + 11554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "_id INTEGER PRIMARY KEY," + 11654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "name TEXT," + 11754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "addr TEXT," + 11854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "channel INTEGER," + 11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "type INTEGER" + 12054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ");"); 12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE TABLE bookmarks (" + 12354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "_id INTEGER PRIMARY KEY," + 12454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "title TEXT," + 12554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "folder TEXT," + 12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "intent TEXT," + 12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "shortcut INTEGER," + 12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project "ordering INTEGER" + 12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ");"); 13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE INDEX bookmarksIndex1 ON bookmarks (folder);"); 13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut);"); 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Populate bookmarks table with initial bookmarks 13554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project loadBookmarks(db); 13654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 13754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Load initial volume levels into DB 13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project loadVolumeLevels(db); 13954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Load inital settings values 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project loadSettings(db); 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project @Override 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) { 14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Upgrading settings database from version " + oldVersion + " to " 14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project + currentVersion); 1489bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int upgradeVersion = oldVersion; 15054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Pattern for upgrade blocks: 15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // 15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // if (upgradeVersion == [the DATABASE_VERSION you set] - 1) { 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // .. your upgrade logic.. 15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // upgradeVersion = [the DATABASE_VERSION you set] 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // } 1579bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion == 20) { 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /* 16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Version 21 is part of the volume control refresh. There is no 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * longer a UI-visible for setting notification vibrate on/off (in 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * our design), but the functionality still exists. Force the 16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * notification vibrate to on. 16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 16554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project loadVibrateSetting(db, true); 16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 21; 16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1699bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion < 22) { 17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 22; 17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Upgrade the lock gesture storage location and format 17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeLockPatternLocation(db); 17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion < 23) { 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("UPDATE favorites SET iconResource=0 WHERE iconType=0"); 17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 23; 17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion == 23) { 18254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.beginTransaction(); 18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD spanX INTEGER"); 18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD spanY INTEGER"); 18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Shortcuts, applications, folders 18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("UPDATE favorites SET spanX=1, spanY=1 WHERE itemType<=0"); 18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Photo frames, clocks 18904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville db.execSQL( 19004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville "UPDATE favorites SET spanX=2, spanY=2 WHERE itemType=1000 or itemType=1002"); 19154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Search boxes 19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("UPDATE favorites SET spanX=4, spanY=1 WHERE itemType=1001"); 19354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.setTransactionSuccessful(); 19454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 19554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.endTransaction(); 19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 24; 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1999bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (upgradeVersion == 24) { 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.beginTransaction(); 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // The value of the constants for preferring wifi or preferring mobile have been 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // swapped, so reload the default. 20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='network_preference'"); 20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("INSERT INTO system ('name', 'value') values ('network_preference', '" + 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ConnectivityManager.DEFAULT_NETWORK_PREFERENCE + "')"); 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.setTransactionSuccessful(); 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } finally { 21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.endTransaction(); 21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project upgradeVersion = 25; 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 214f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 215f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 25) { 216f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.beginTransaction(); 217f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project try { 218f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD uri TEXT"); 219f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("ALTER TABLE favorites ADD displayMode INTEGER"); 220f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.setTransactionSuccessful(); 221f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } finally { 222f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.endTransaction(); 223f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 224f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 26; 225f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 2269bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 227f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 26) { 228f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // This introduces the new secure settings table. 229f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.beginTransaction(); 230f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project try { 231f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project createSecureTable(db); 232f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.setTransactionSuccessful(); 233f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } finally { 234f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.endTransaction(); 235f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 236f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 27; 237f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 2389bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 239f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 27) { 240156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani String[] settingsToMove = { 241f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.ADB_ENABLED, 242f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.ANDROID_ID, 243f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.BLUETOOTH_ON, 244f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.DATA_ROAMING, 245f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.DEVICE_PROVISIONED, 246f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.HTTP_PROXY, 247f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.INSTALL_NON_MARKET_APPS, 248f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.LOCATION_PROVIDERS_ALLOWED, 249f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.LOGGING_ID, 250f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.NETWORK_PREFERENCE, 251f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.PARENTAL_CONTROL_ENABLED, 252f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.PARENTAL_CONTROL_LAST_UPDATE, 253f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.PARENTAL_CONTROL_REDIRECT_URL, 254f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.SETTINGS_CLASSNAME, 255f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.USB_MASS_STORAGE_ENABLED, 256f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.USE_GOOGLE_MAIL, 257f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 258f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, 259f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, 260f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_ON, 261f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE, 262f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_AP_COUNT, 263f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS, 264f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED, 265f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS, 266f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT, 267f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_MAX_AP_CHECKS, 268f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_ON, 269f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_PING_COUNT, 270f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_PING_DELAY_MS, 271f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS, 272f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project }; 273156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani moveFromSystemToSecure(db, settingsToMove); 274f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 28; 275f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 2769bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 277f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project if (upgradeVersion == 28 || upgradeVersion == 29) { 278f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // Note: The upgrade to 28 was flawed since it didn't delete the old 279f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // setting first before inserting. Combining 28 and 29 with the 280f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // fixed version. 281f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 282f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // This upgrade adds the STREAM_NOTIFICATION type to the list of 283f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project // types affected by ringer modes (silent, vibrate, etc.) 284f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.beginTransaction(); 285f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project try { 286f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" 287f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 288f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project int newValue = (1 << AudioManager.STREAM_RING) 289f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project | (1 << AudioManager.STREAM_NOTIFICATION) 290f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project | (1 << AudioManager.STREAM_SYSTEM); 291f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("INSERT INTO system ('name', 'value') values ('" 292f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 293f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project + String.valueOf(newValue) + "')"); 294f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.setTransactionSuccessful(); 295f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } finally { 296f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.endTransaction(); 297f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 2989bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 299f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project upgradeVersion = 30; 300f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 3019bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 3029266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project if (upgradeVersion == 30) { 3039266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project /* 3049266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project * Upgrade 31 clears the title for all quick launch shortcuts so the 3059266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project * activities' titles will be resolved at display time. Also, the 3069266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project * folder is changed to '@quicklaunch'. 3079266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project */ 3089266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.beginTransaction(); 3099266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project try { 3109266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.execSQL("UPDATE bookmarks SET folder = '@quicklaunch'"); 3119266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.execSQL("UPDATE bookmarks SET title = ''"); 3129266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.setTransactionSuccessful(); 3139266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project } finally { 3149266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project db.endTransaction(); 3159266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project } 3169266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project upgradeVersion = 31; 3179266c558bf1d21ff647525ff99f7dadbca417309The Android Open Source Project } 318f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (upgradeVersion == 31) { 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 321ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project * Animations are now managed in preferences, and may be 322ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project * enabled or disabled based on product resources. 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.beginTransaction(); 32589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 33189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " VALUES(?,?);"); 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadDefaultAnimationSettings(stmt); 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.setTransactionSuccessful(); 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.endTransaction(); 33789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project upgradeVersion = 32; 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (upgradeVersion == 32) { 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // The Wi-Fi watchdog SSID list is now seeded with the value of 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the property ro.com.android.wifi-watchlist 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!TextUtils.isEmpty(wifiWatchList)) { 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.beginTransaction(); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Settings.Secure.WIFI_WATCHDOG_WATCH_LIST + "','" + 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wifiWatchList + "');"); 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.setTransactionSuccessful(); 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project db.endTransaction(); 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project upgradeVersion = 33; 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3599bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 3604df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project if (upgradeVersion == 33) { 3614df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project // Set the default zoom controls to: tap-twice to bring up +/- 3624df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.beginTransaction(); 3634df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project try { 3644df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.execSQL("INSERT INTO system(name,value) values('zoom','2');"); 3654df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.setTransactionSuccessful(); 3664df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } finally { 3674df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project db.endTransaction(); 3684df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 3694df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project upgradeVersion = 34; 3704df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 372bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood if (upgradeVersion == 34) { 373bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood db.beginTransaction(); 37489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 375bcab8df83e6e769a7cbcc742e72b47d665998793Mike Lockwood try { 37689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 377cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn + " VALUES(?,?);"); 378cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadSecure35Settings(stmt); 379cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn db.setTransactionSuccessful(); 380cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } finally { 381cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn db.endTransaction(); 38289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 383cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } 384f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller upgradeVersion = 35; 38502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } 38602901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // due to a botched merge from donut to eclair, the initialization of ASSISTED_GPS_ENABLED 38702901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // was accidentally done out of order here. 38802901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // to fix this, ASSISTED_GPS_ENABLED is now initialized while upgrading from 38 to 39, 38902901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood // and we intentionally do nothing from 35 to 36 now. 39002901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood if (upgradeVersion == 35) { 391575d1af980f4b4866325bfc487455f54606cf49eThe Android Open Source Project upgradeVersion = 36; 392cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } 39302901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood 394a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent if (upgradeVersion == 36) { 395a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent // This upgrade adds the STREAM_SYSTEM_ENFORCED type to the list of 396a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent // types affected by ringer modes (silent, vibrate, etc.) 397a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.beginTransaction(); 398a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent try { 399a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.execSQL("DELETE FROM system WHERE name='" 400a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 401a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent int newValue = (1 << AudioManager.STREAM_RING) 402a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent | (1 << AudioManager.STREAM_NOTIFICATION) 403a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent | (1 << AudioManager.STREAM_SYSTEM) 404a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent | (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 405a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.execSQL("INSERT INTO system ('name', 'value') values ('" 406a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 407a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent + String.valueOf(newValue) + "')"); 408a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.setTransactionSuccessful(); 409a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent } finally { 410a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent db.endTransaction(); 411a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent } 4124880575bacd9f49d864e8b61efca8cdeb231895cJim Miller upgradeVersion = 37; 413a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent } 414a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent 415bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood if (upgradeVersion == 37) { 416bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood db.beginTransaction(); 41789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 418bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood try { 41989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 420bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood + " VALUES(?,?);"); 421bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 422bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood R.string.airplane_mode_toggleable_radios); 423bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood db.setTransactionSuccessful(); 424bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood } finally { 425bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood db.endTransaction(); 42689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 427bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood } 428bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood upgradeVersion = 38; 429bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood } 430bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79fMike Lockwood 43102901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood if (upgradeVersion == 38) { 43202901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.beginTransaction(); 43302901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood try { 43402901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood String value = 43502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood mContext.getResources().getBoolean(R.bool.assisted_gps_enabled) ? "1" : "0"; 43602901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.execSQL("INSERT OR IGNORE INTO secure(name,value) values('" + 43702901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood Settings.Secure.ASSISTED_GPS_ENABLED + "','" + value + "');"); 43802901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.setTransactionSuccessful(); 43902901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } finally { 44002901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood db.endTransaction(); 44102901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } 44202901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood 44302901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood upgradeVersion = 39; 44402901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood } 44502901eb7f21751b8a9486ffa9f50531bd59133a2Mike Lockwood 446951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy if (upgradeVersion == 39) { 447f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani upgradeAutoBrightness(db); 448951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy upgradeVersion = 40; 449951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy } 450951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy 451bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn if (upgradeVersion == 40) { 452bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn /* 453bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn * All animations are now turned on by default! 454bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn */ 455bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.beginTransaction(); 45689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 457bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn try { 458bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 459bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 460bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 461bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 46289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 463bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + " VALUES(?,?);"); 464bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn loadDefaultAnimationSettings(stmt); 465bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.setTransactionSuccessful(); 466bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } finally { 467bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.endTransaction(); 46889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 469bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } 470bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn upgradeVersion = 41; 471bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } 472bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn 473075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn if (upgradeVersion == 41) { 474075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn /* 475075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn * Initialize newly public haptic feedback setting 476075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn */ 477075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.beginTransaction(); 47889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 479075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn try { 480075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 481075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn + Settings.System.HAPTIC_FEEDBACK_ENABLED + "'"); 48289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 483075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn + " VALUES(?,?);"); 484075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn loadDefaultHapticSettings(stmt); 485075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.setTransactionSuccessful(); 486075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } finally { 487075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.endTransaction(); 48889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 489075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 490075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn upgradeVersion = 42; 491075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 492075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn 493ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani if (upgradeVersion == 42) { 494ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani /* 495ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani * Initialize new notification pulse setting 496ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani */ 497ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.beginTransaction(); 49889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 499ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani try { 50089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 501ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani + " VALUES(?,?);"); 502ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 503ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani R.bool.def_notification_pulse); 504ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.setTransactionSuccessful(); 505ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } finally { 506ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.endTransaction(); 50789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 508ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } 509ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani upgradeVersion = 43; 510ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } 511ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani 512484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent if (upgradeVersion == 43) { 513484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent /* 514484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent * This upgrade stores bluetooth volume separately from voice volume 515484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent */ 516484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.beginTransaction(); 51789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 518484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent try { 51989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 520484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent + " VALUES(?,?);"); 521484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO, 522484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]); 523484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.setTransactionSuccessful(); 524484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } finally { 525484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.endTransaction(); 52689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 527484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } 528484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent upgradeVersion = 44; 529484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } 530484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent 531aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker if (upgradeVersion == 44) { 532aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker /* 533aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker * Gservices was moved into vendor/google. 534aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker */ 535aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker db.execSQL("DROP TABLE IF EXISTS gservices"); 536aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 537aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker upgradeVersion = 45; 538aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker } 53987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat 54087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat if (upgradeVersion == 45) { 54187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat /* 54287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat * New settings for MountService 54387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat */ 54487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.beginTransaction(); 54587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat try { 54687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 54787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND + "','1');"); 54887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 54987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_AUTOSTART + "','0');"); 55087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 55187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_PROMPT + "','1');"); 55287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 55387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED + "','1');"); 55487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.setTransactionSuccessful(); 55587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } finally { 55687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.endTransaction(); 55787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } 55887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat upgradeVersion = 46; 55987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } 56087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat 561df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn if (upgradeVersion == 46) { 562df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn /* 563df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn * The password mode constants have changed; reset back to no 564df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn * password. 565df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn */ 566df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.beginTransaction(); 567df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn try { 568df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 569df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.setTransactionSuccessful(); 570df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } finally { 571df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.endTransaction(); 572df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } 573df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn upgradeVersion = 47; 574df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } 575df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn 5766176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 5779327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn if (upgradeVersion == 47) { 5789327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn /* 5799327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn * The password mode constants have changed again; reset back to no 5809327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn * password. 5819327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn */ 5829327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.beginTransaction(); 5839327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn try { 5849327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 5859327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.setTransactionSuccessful(); 5869327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } finally { 5879327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.endTransaction(); 5889327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } 5899327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn upgradeVersion = 48; 5909327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } 5916176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 5925d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau if (upgradeVersion == 48) { 5935d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau /* 59421f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn * Default recognition service no longer initialized here, 59521f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn * moved to RecognitionManagerService. 5965d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau */ 5975d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau upgradeVersion = 49; 5985d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau } 59931f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller 6000e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler if (upgradeVersion == 49) { 6010e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler /* 6020e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler * New settings for new user interface noises. 6030e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler */ 6040e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.beginTransaction(); 60589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 6060e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler try { 60789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 6080e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler + " VALUES(?,?);"); 6090e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadUISoundEffectsSettings(stmt); 6100e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.setTransactionSuccessful(); 6110e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } finally { 6120e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.endTransaction(); 61389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 6140e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 6150e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 6160e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler upgradeVersion = 50; 6170e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 6180e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 619f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor if (upgradeVersion == 50) { 620f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor /* 62140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu * Install location no longer initiated here. 622f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor */ 623f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor upgradeVersion = 51; 624f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor } 625f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor 626156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (upgradeVersion == 51) { 627156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani /* Move the lockscreen related settings to Secure, including some private ones. */ 628156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani String[] settingsToMove = { 629156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_ENABLED, 630156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_VISIBLE, 631156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, 632156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.password_type", 633156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.lockoutattemptdeadline", 634156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.patterneverchosen", 635156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lock_pattern_autolock", 636156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.lockedoutpermanently", 637156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.password_salt" 638156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani }; 639156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani moveFromSystemToSecure(db, settingsToMove); 640156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani upgradeVersion = 52; 641156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 642156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 6431c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler if (upgradeVersion == 52) { 6441c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler // new vibration/silent mode settings 6451c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.beginTransaction(); 64689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 6471c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler try { 64889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 6491c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler + " VALUES(?,?);"); 6501c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 6511c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler R.bool.def_vibrate_in_silent); 6521c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.setTransactionSuccessful(); 6531c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } finally { 6541c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.endTransaction(); 65589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 6561c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } 6571c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 6581c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler upgradeVersion = 53; 6591c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } 6603c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 661089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu if (upgradeVersion == 53) { 662089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu /* 66340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu * New settings for set install location UI no longer initiated here. 664089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu */ 665089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu upgradeVersion = 54; 666089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu } 6671c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 668b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (upgradeVersion == 54) { 669b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani /* 670b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani * Update the screen timeout value if set to never 671b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani */ 672b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.beginTransaction(); 673b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani try { 674b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani upgradeScreenTimeoutFromNever(db); 675b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.setTransactionSuccessful(); 676b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } finally { 677b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.endTransaction(); 678b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 679b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 680b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani upgradeVersion = 55; 681b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 682b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 68340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu if (upgradeVersion == 55) { 68440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu /* Move the install location settings. */ 68540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu String[] settingsToMove = { 68640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu Secure.SET_INSTALL_LOCATION, 68740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu Secure.DEFAULT_INSTALL_LOCATION 68840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu }; 68940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu moveFromSystemToSecure(db, settingsToMove); 69040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.beginTransaction(); 69140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu SQLiteStatement stmt = null; 69240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu try { 69340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu stmt = db.compileStatement("INSERT INTO system(name,value)" 69440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu + " VALUES(?,?);"); 69540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Secure.SET_INSTALL_LOCATION, 0); 69640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Secure.DEFAULT_INSTALL_LOCATION, 69740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu PackageHelper.APP_INSTALL_AUTO); 69840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.setTransactionSuccessful(); 69940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } finally { 70040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.endTransaction(); 70140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu if (stmt != null) stmt.close(); 70240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } 70340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu upgradeVersion = 56; 70440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } 7056659284d68bb04539891456700c8da2d0bae7d09Jake Hamby 7066659284d68bb04539891456700c8da2d0bae7d09Jake Hamby if (upgradeVersion == 56) { 7076659284d68bb04539891456700c8da2d0bae7d09Jake Hamby /* 7086659284d68bb04539891456700c8da2d0bae7d09Jake Hamby * Add Bluetooth to list of toggleable radios in airplane mode 7096659284d68bb04539891456700c8da2d0bae7d09Jake Hamby */ 7106659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.beginTransaction(); 7116659284d68bb04539891456700c8da2d0bae7d09Jake Hamby SQLiteStatement stmt = null; 7126659284d68bb04539891456700c8da2d0bae7d09Jake Hamby try { 7136659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.execSQL("DELETE FROM system WHERE name='" 7146659284d68bb04539891456700c8da2d0bae7d09Jake Hamby + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'"); 7156659284d68bb04539891456700c8da2d0bae7d09Jake Hamby stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 7166659284d68bb04539891456700c8da2d0bae7d09Jake Hamby + " VALUES(?,?);"); 7176659284d68bb04539891456700c8da2d0bae7d09Jake Hamby loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 7186659284d68bb04539891456700c8da2d0bae7d09Jake Hamby R.string.airplane_mode_toggleable_radios); 7196659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.setTransactionSuccessful(); 7206659284d68bb04539891456700c8da2d0bae7d09Jake Hamby } finally { 7216659284d68bb04539891456700c8da2d0bae7d09Jake Hamby db.endTransaction(); 7226659284d68bb04539891456700c8da2d0bae7d09Jake Hamby if (stmt != null) stmt.close(); 7236659284d68bb04539891456700c8da2d0bae7d09Jake Hamby } 7246659284d68bb04539891456700c8da2d0bae7d09Jake Hamby upgradeVersion = 57; 7256659284d68bb04539891456700c8da2d0bae7d09Jake Hamby } 726585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 7275cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani /************* The following are Honeycomb changes ************/ 7285cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani 729585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov if (upgradeVersion == 57) { 730585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov /* 731585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov * New settings to: 732585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov * 1. Enable injection of accessibility scripts in WebViews. 733585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov * 2. Define the key bindings for traversing web content in WebViews. 734585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov */ 735585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov db.beginTransaction(); 736585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov SQLiteStatement stmt = null; 737585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov try { 738585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 739585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov + " VALUES(?,?);"); 740585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 741585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.bool.def_accessibility_script_injection); 742585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov stmt.close(); 743585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 744585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov + " VALUES(?,?);"); 745585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, 746585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.string.def_accessibility_web_content_key_bindings); 747585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov db.setTransactionSuccessful(); 748585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov } finally { 749585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov db.endTransaction(); 750585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov if (stmt != null) stmt.close(); 751585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov } 752585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov upgradeVersion = 58; 753585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov } 754585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 755ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani if (upgradeVersion == 58) { 756ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani /* Add default for new Auto Time Zone */ 7575cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani int autoTimeValue = getIntValueFromSystem(db, Settings.System.AUTO_TIME, 0); 758ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani db.beginTransaction(); 759ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani SQLiteStatement stmt = null; 760ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani try { 7615cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani stmt = db.compileStatement("INSERT INTO system(name,value)" + " VALUES(?,?);"); 7625cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani loadSetting(stmt, Settings.System.AUTO_TIME_ZONE, 7635cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani autoTimeValue); // Sync timezone to NITZ if auto_time was enabled 764ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani db.setTransactionSuccessful(); 765ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani } finally { 766ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani db.endTransaction(); 767ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani if (stmt != null) stmt.close(); 768ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani } 769ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani upgradeVersion = 59; 770ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani } 771ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani 772b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler if (upgradeVersion == 59) { 773b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler // Persistence for the rotation lock feature. 774b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler db.beginTransaction(); 775b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler SQLiteStatement stmt = null; 776b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler try { 777b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler stmt = db.compileStatement("INSERT INTO system(name,value)" 778b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler + " VALUES(?,?);"); 779b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler loadBooleanSetting(stmt, Settings.System.USER_ROTATION, 780b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler R.integer.def_user_rotation); // should be zero degrees 781b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler db.setTransactionSuccessful(); 782b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler } finally { 783b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler db.endTransaction(); 784b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler if (stmt != null) stmt.close(); 785b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler } 786b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler upgradeVersion = 60; 787b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler } 788b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler 7890038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani if (upgradeVersion == 60) { 7905cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Don't do this for upgrades from Gingerbread 7915cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Were only required for intra-Honeycomb upgrades for testing 7925cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // upgradeScreenTimeout(db); 7930038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani upgradeVersion = 61; 7940038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani } 7950038931043f8edf9c32645e5caf96f217cef01deAmith Yamasani 79679373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani if (upgradeVersion == 61) { 7975cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Don't do this for upgrades from Gingerbread 7985cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Were only required for intra-Honeycomb upgrades for testing 7995cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // upgradeScreenTimeout(db); 80079373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani upgradeVersion = 62; 80179373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } 80279373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani 803f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani // Change the default for screen auto-brightness mode 804f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani if (upgradeVersion == 62) { 8055cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Don't do this for upgrades from Gingerbread 8065cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Were only required for intra-Honeycomb upgrades for testing 8075cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // upgradeAutoBrightness(db); 808f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani upgradeVersion = 63; 809f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } 810f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani 81125101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent if (upgradeVersion == 63) { 81225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent // This upgrade adds the STREAM_MUSIC type to the list of 81325101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent // types affected by ringer modes (silent, vibrate, etc.) 81425101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.beginTransaction(); 81525101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent try { 81625101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.execSQL("DELETE FROM system WHERE name='" 81725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 81825101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent int newValue = (1 << AudioManager.STREAM_RING) 81925101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_NOTIFICATION) 82025101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_SYSTEM) 82125101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_SYSTEM_ENFORCED) 82225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent | (1 << AudioManager.STREAM_MUSIC); 82325101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.execSQL("INSERT INTO system ('name', 'value') values ('" 82425101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 82525101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent + String.valueOf(newValue) + "')"); 82625101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.setTransactionSuccessful(); 82725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent } finally { 82825101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent db.endTransaction(); 82925101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent } 83025101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent upgradeVersion = 64; 83125101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent } 83225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent 83354d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov if (upgradeVersion == 64) { 83454d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov // New setting to configure the long press timeout. 83554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov db.beginTransaction(); 83654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov SQLiteStatement stmt = null; 83754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov try { 83854d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 83954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov + " VALUES(?,?);"); 84054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov loadIntegerSetting(stmt, Settings.Secure.LONG_PRESS_TIMEOUT, 84154d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov R.integer.def_long_press_timeout_millis); 84254d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov stmt.close(); 84354d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov db.setTransactionSuccessful(); 84454d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov } finally { 84554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov db.endTransaction(); 84654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov if (stmt != null) stmt.close(); 84754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov } 84854d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov upgradeVersion = 65; 84954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov } 85054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov 8515cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani /************* The following are Ice Cream Sandwich changes ************/ 8525cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani 853fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne if (upgradeVersion == 65) { 854fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne /* 855fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne * Animations are removed from Settings. Turned on by default 856fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne */ 857fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.beginTransaction(); 858fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne SQLiteStatement stmt = null; 859fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne try { 860fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.execSQL("DELETE FROM system WHERE name='" 861fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 862fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.execSQL("DELETE FROM system WHERE name='" 863fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 864fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne stmt = db.compileStatement("INSERT INTO system(name,value)" 865fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne + " VALUES(?,?);"); 866fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne loadDefaultAnimationSettings(stmt); 867fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.setTransactionSuccessful(); 868fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne } finally { 869fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne db.endTransaction(); 870fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne if (stmt != null) stmt.close(); 871fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne } 872fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne upgradeVersion = 66; 873fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne } 874fa53d3002fadf8640600c1840962021a821b8baeGilles Debunne 875c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent if (upgradeVersion == 66) { 87642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani // This upgrade makes sure that MODE_RINGER_STREAMS_AFFECTED is set 87742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani // according to device voice capability 87842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.beginTransaction(); 87942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani try { 88042722bfa136f5616872a2c4e199813e804621c81Amith Yamasani int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | 88142722bfa136f5616872a2c4e199813e804621c81Amith Yamasani (1 << AudioManager.STREAM_NOTIFICATION) | 88242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani (1 << AudioManager.STREAM_SYSTEM) | 88342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 88442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani if (!mContext.getResources().getBoolean( 88542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani com.android.internal.R.bool.config_voice_capable)) { 88642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC); 88742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 88842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.execSQL("DELETE FROM system WHERE name='" 88942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'"); 89042722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.execSQL("INSERT INTO system ('name', 'value') values ('" 89142722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '" 89242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + String.valueOf(ringerModeAffectedStreams) + "')"); 89342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.setTransactionSuccessful(); 89442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } finally { 89542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.endTransaction(); 89642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 89742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani upgradeVersion = 67; 89842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 899c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent 900a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov if (upgradeVersion == 67) { 901a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov // New setting to enable touch exploration. 902a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov db.beginTransaction(); 903a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov SQLiteStatement stmt = null; 904a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov try { 905a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 906a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov + " VALUES(?,?);"); 907a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 908a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov R.bool.def_touch_exploration_enabled); 909a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov stmt.close(); 910a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov db.setTransactionSuccessful(); 911a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov } finally { 912a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov db.endTransaction(); 913a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov if (stmt != null) stmt.close(); 914a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov } 915a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov upgradeVersion = 68; 916a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov } 917a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov 91842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani if (upgradeVersion == 68) { 91942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani // Enable all system sounds by default 92042722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.beginTransaction(); 92142722bfa136f5616872a2c4e199813e804621c81Amith Yamasani try { 92242722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.execSQL("DELETE FROM system WHERE name='" 92342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani + Settings.System.NOTIFICATIONS_USE_RING_VOLUME + "'"); 92442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.setTransactionSuccessful(); 92542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } finally { 92642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani db.endTransaction(); 92742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 92842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani upgradeVersion = 69; 92942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani } 930a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov 9318d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly if (upgradeVersion == 69) { 9328d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly // Add RADIO_NFC to AIRPLANE_MODE_RADIO and AIRPLANE_MODE_TOGGLEABLE_RADIOS 9338d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly String airplaneRadios = mContext.getResources().getString( 9348d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly R.string.def_airplane_mode_radios); 9358d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly String toggleableRadios = mContext.getResources().getString( 9368d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly R.string.airplane_mode_toggleable_radios); 9378d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.beginTransaction(); 9388d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly try { 9398d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.execSQL("UPDATE system SET value='" + airplaneRadios + "' " + 9408d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly "WHERE name='" + Settings.System.AIRPLANE_MODE_RADIOS + "'"); 9418d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.execSQL("UPDATE system SET value='" + toggleableRadios + "' " + 9428d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly "WHERE name='" + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'"); 9438d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.setTransactionSuccessful(); 9448d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly } finally { 9458d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly db.endTransaction(); 9468d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly } 9478d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly upgradeVersion = 70; 9488d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly } 9498d32a01bd24b8a0d1a98f0581b3394a78fab8242Nick Pelly 9506651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown if (upgradeVersion == 70) { 9516651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown // Update all built-in bookmarks. Some of the package names have changed. 9526651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown loadBookmarks(db); 9536651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown upgradeVersion = 71; 9546651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } 9556651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown 95655f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov if (upgradeVersion == 71) { 95755f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov // New setting to specify whether to speak passwords in accessibility mode. 95855f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov db.beginTransaction(); 95955f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov SQLiteStatement stmt = null; 96055f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov try { 96155f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value)" 96255f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov + " VALUES(?,?);"); 96355f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 96455f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov R.bool.def_accessibility_speak_password); 9656243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.setTransactionSuccessful(); 96655f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov } finally { 96755f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov db.endTransaction(); 96855f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov if (stmt != null) stmt.close(); 96955f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov } 97055f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov upgradeVersion = 72; 97155f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov } 97255f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov 9736243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani if (upgradeVersion == 72) { 9746243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani // update vibration settings 9756243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.beginTransaction(); 9766243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani SQLiteStatement stmt = null; 9776243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani try { 9786243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 9796243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani + " VALUES(?,?);"); 9806243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 9816243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani R.bool.def_vibrate_in_silent); 9826243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.setTransactionSuccessful(); 9836243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani } finally { 9846243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani db.endTransaction(); 9856243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani if (stmt != null) stmt.close(); 9866243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani } 9876243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani upgradeVersion = 73; 9886243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani } 9896243edd818b84adfbe712d5d233d6414b33653acAmith Yamasani 9903ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov if (upgradeVersion == 73) { 991398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani upgradeVibrateSettingFromNone(db); 992398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani upgradeVersion = 74; 993398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 994398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani 995398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani if (upgradeVersion == 74) { 9963ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov // URL from which WebView loads a JavaScript based screen-reader. 9973ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov db.beginTransaction(); 9983ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov SQLiteStatement stmt = null; 9993ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov try { 10003ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov stmt = db.compileStatement("INSERT INTO secure(name,value) VALUES(?,?);"); 10013ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 10023ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov R.string.def_accessibility_screen_reader_url); 10033ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov db.setTransactionSuccessful(); 10043ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov } finally { 10053ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov db.endTransaction(); 10063ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov if (stmt != null) stmt.close(); 10073ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov } 1008398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani upgradeVersion = 75; 10093ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov } 10107bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (upgradeVersion == 75) { 10117bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood db.beginTransaction(); 10127bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood SQLiteStatement stmt = null; 10137bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood Cursor c = null; 10147bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood try { 10157bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood c = db.query("secure", new String[] {"_id", "value"}, 10167bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood "name='lockscreen.disabled'", 10177bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood null, null, null, null); 10187bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood // only set default if it has not yet been set 10197bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (c == null || c.getCount() == 0) { 10207bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood stmt = db.compileStatement("INSERT INTO system(name,value)" 10217bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood + " VALUES(?,?);"); 10227bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, 10237bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood R.bool.def_lockscreen_disabled); 10247bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } 10257bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood db.setTransactionSuccessful(); 10267bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } finally { 10277bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood db.endTransaction(); 10287bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (c != null) c.close(); 10297bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood if (stmt != null) stmt.close(); 10307bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } 10317bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood upgradeVersion = 76; 10327bef73900b075fc0a9078d418964ca8e7210d565Mike Lockwood } 10333ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov 1034bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent /************* The following are Jelly Bean changes ************/ 1035bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 1036bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent if (upgradeVersion == 76) { 1037bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent // Removed VIBRATE_IN_SILENT setting 1038bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.beginTransaction(); 1039bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent try { 1040bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.execSQL("DELETE FROM system WHERE name='" 1041bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent + Settings.System.VIBRATE_IN_SILENT + "'"); 1042bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.setTransactionSuccessful(); 1043bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent } finally { 1044bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent db.endTransaction(); 1045bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent } 1046bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 1047bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent upgradeVersion = 77; 1048bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent } 1049bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 10503c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa if (upgradeVersion == 77) { 10513c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // Introduce "vibrate when ringing" setting 10523c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa loadVibrateWhenRingingSetting(db); 10533c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 10543c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa upgradeVersion = 78; 10553c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } 1056bffc3d1bd33eb2d8e00a9f8b6261d815db503311Eric Laurent 10573a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv if (upgradeVersion == 78) { 10583a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv // The JavaScript based screen-reader URL changes in JellyBean. 10593a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv db.beginTransaction(); 10603a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv SQLiteStatement stmt = null; 10613a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv try { 10623a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 10633a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv + " VALUES(?,?);"); 10643a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 10653a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv R.string.def_accessibility_screen_reader_url); 10663a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv db.setTransactionSuccessful(); 10673a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv } finally { 10683a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv db.endTransaction(); 10693a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv if (stmt != null) stmt.close(); 10703a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv } 10713a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv upgradeVersion = 79; 10723a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv } 10733a67eb3be43bfd1f7735cf018c4cb552c6cbba08alanv 10748631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (upgradeVersion == 79) { 10758631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // Before touch exploration was a global setting controlled by the user 10768631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // via the UI. However, if the enabled accessibility services do not 10778631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // handle touch exploration mode, enabling it makes no sense. Therefore, 10788631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // now the services request touch exploration mode and the user is 10798631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // presented with a dialog to allow that and if she does we store that 10808631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // in the database. As a result of this change a user that has enabled 10818631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // accessibility, touch exploration, and some accessibility services 10828631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // may lose touch exploration state, thus rendering the device useless 10838631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // unless sighted help is provided, since the enabled service(s) are 10848631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // not in the list of services to which the user granted a permission 10858631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // to put the device in touch explore mode. Here we are allowing all 10868631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // enabled accessibility services to toggle touch exploration provided 10878631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // accessibility and touch exploration are enabled and no services can 10888631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // toggle touch exploration. Note that the user has already manually 10898631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // enabled the services and touch exploration which means the she has 10908631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov // given consent to have these services work in touch exploration mode. 10918631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov final boolean accessibilityEnabled = getIntValueFromTable(db, "secure", 10928631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1; 10938631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov final boolean touchExplorationEnabled = getIntValueFromTable(db, "secure", 10948631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0) == 1; 10958631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (accessibilityEnabled && touchExplorationEnabled) { 10968631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov String enabledServices = getStringValueFromTable(db, "secure", 10978631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, ""); 10988631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov String touchExplorationGrantedServices = getStringValueFromTable(db, "secure", 10998631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, ""); 11008631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (TextUtils.isEmpty(touchExplorationGrantedServices) 11018631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov && !TextUtils.isEmpty(enabledServices)) { 11028631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov SQLiteStatement stmt = null; 11038631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov try { 11048631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov db.beginTransaction(); 11058631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)" 11068631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov + " VALUES(?,?);"); 11078631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov loadSetting(stmt, 11088631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, 11098631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov enabledServices); 11108631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov db.setTransactionSuccessful(); 11118631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } finally { 11128631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov db.endTransaction(); 11138631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov if (stmt != null) stmt.close(); 11148631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 11158631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 11168631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 11178631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov upgradeVersion = 80; 11188631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 11198631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov 11201c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler // *** Remember to update DATABASE_VERSION above! 11211c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 11221c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler if (upgradeVersion != currentVersion) { 112354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion 112454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project + ", must wipe the settings provider"); 112554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS system"); 112654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS systemIndex1"); 1127f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS secure"); 1128f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS secureIndex1"); 112954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS gservices"); 113054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 113154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS bluetooth_devices"); 113254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS bookmarks"); 113354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS bookmarksIndex1"); 113454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS bookmarksIndex2"); 113554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS favorites"); 113654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project onCreate(db); 11376176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 11386176677e01964cb5751ff217c091571ce6a8b5fbJim Miller // Added for diagnosing settings.db wipes after the fact 11396176677e01964cb5751ff217c091571ce6a8b5fbJim Miller String wipeReason = oldVersion + "/" + upgradeVersion + "/" + currentVersion; 11406176677e01964cb5751ff217c091571ce6a8b5fbJim Miller db.execSQL("INSERT INTO secure(name,value) values('" + 11416176677e01964cb5751ff217c091571ce6a8b5fbJim Miller "wiped_db_reason" + "','" + wipeReason + "');"); 114254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 114354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 114454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1145156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani private void moveFromSystemToSecure(SQLiteDatabase db, String [] settingsToMove) { 1146156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani // Copy settings values from 'system' to 'secure' and delete them from 'system' 1147156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani SQLiteStatement insertStmt = null; 1148156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani SQLiteStatement deleteStmt = null; 1149156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 1150156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.beginTransaction(); 1151156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani try { 1152156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt = 1153156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.compileStatement("INSERT INTO secure (name,value) SELECT name,value FROM " 1154156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani + "system WHERE name=?"); 1155156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt = db.compileStatement("DELETE FROM system WHERE name=?"); 1156156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 1157156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 1158156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani for (String setting : settingsToMove) { 1159156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.bindString(1, setting); 1160156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.execute(); 1161156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 1162156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.bindString(1, setting); 1163156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.execute(); 1164156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 1165156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.setTransactionSuccessful(); 1166156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } finally { 1167156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.endTransaction(); 1168156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (insertStmt != null) { 1169156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.close(); 1170156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 1171156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (deleteStmt != null) { 1172156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.close(); 1173156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 1174156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 1175156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 1176156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 117754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void upgradeLockPatternLocation(SQLiteDatabase db) { 11789bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh Cursor c = db.query("system", new String[] {"_id", "value"}, "name='lock_pattern'", 117954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project null, null, null, null); 118054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (c.getCount() > 0) { 118154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.moveToFirst(); 118254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String lockPattern = c.getString(1); 118354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!TextUtils.isEmpty(lockPattern)) { 118454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Convert lock pattern 118554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 118631f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller LockPatternUtils lpu = new LockPatternUtils(mContext); 11879bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh List<LockPatternView.Cell> cellPattern = 118854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LockPatternUtils.stringToPattern(lockPattern); 118954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project lpu.saveLockPattern(cellPattern); 119054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (IllegalArgumentException e) { 119154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Don't want corrupted lock pattern to hang the reboot process 119254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 119354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 119454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.close(); 119554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.delete("system", "name='lock_pattern'", null); 119654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 119754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.close(); 119854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 119954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 120054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1201b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani private void upgradeScreenTimeoutFromNever(SQLiteDatabase db) { 1202b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani // See if the timeout is -1 (for "Never"). 1203b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani Cursor c = db.query("system", new String[] { "_id", "value" }, "name=? AND value=?", 1204b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani new String[] { Settings.System.SCREEN_OFF_TIMEOUT, "-1" }, 1205b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani null, null, null); 1206b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 1207b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani SQLiteStatement stmt = null; 1208b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (c.getCount() > 0) { 1209b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani c.close(); 1210b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani try { 1211b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 1212b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani + " VALUES(?,?);"); 12133c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 1214b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani // Set the timeout to 30 minutes in milliseconds 1215cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 1216cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani Integer.toString(30 * 60 * 1000)); 1217b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } finally { 1218b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (stmt != null) stmt.close(); 1219b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 1220b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } else { 1221b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani c.close(); 1222b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 1223b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 1224b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 1225398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani private void upgradeVibrateSettingFromNone(SQLiteDatabase db) { 1226398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON, 0); 1227398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani // If the ringer vibrate value is invalid, set it to the default 1228398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani if ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_OFF) { 1229398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani vibrateSetting = AudioService.getValueForVibrateSetting(0, 1230398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 1231398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 1232398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani // Apply the same setting to the notification vibrate value 1233398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani vibrateSetting = AudioService.getValueForVibrateSetting(vibrateSetting, 1234398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani AudioManager.VIBRATE_TYPE_NOTIFICATION, vibrateSetting); 1235398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani 1236398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani SQLiteStatement stmt = null; 1237398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani try { 1238398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 1239398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani + " VALUES(?,?);"); 1240398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani loadSetting(stmt, Settings.System.VIBRATE_ON, vibrateSetting); 1241398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } finally { 1242398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani if (stmt != null) 1243398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani stmt.close(); 1244398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 1245398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani } 1246398c83cc07354ca28c7108b712017146dadd41a0Amith Yamasani 124779373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani private void upgradeScreenTimeout(SQLiteDatabase db) { 124879373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani // Change screen timeout to current default 124979373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani db.beginTransaction(); 125079373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani SQLiteStatement stmt = null; 125179373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani try { 125279373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 125379373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani + " VALUES(?,?);"); 125479373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 125579373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani R.integer.def_screen_off_timeout); 125679373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani db.setTransactionSuccessful(); 125779373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } finally { 125879373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani db.endTransaction(); 125979373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani if (stmt != null) 126079373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani stmt.close(); 126179373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } 126279373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani } 126379373f660bd41d3824ce8c121077b29dfa4c29d9Amith Yamasani 1264f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani private void upgradeAutoBrightness(SQLiteDatabase db) { 1265f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.beginTransaction(); 1266f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani try { 1267f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani String value = 1268f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani mContext.getResources().getBoolean( 1269f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani R.bool.def_screen_brightness_automatic_mode) ? "1" : "0"; 1270f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.execSQL("INSERT OR REPLACE INTO system(name,value) values('" + 1271f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani Settings.System.SCREEN_BRIGHTNESS_MODE + "','" + value + "');"); 1272f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.setTransactionSuccessful(); 1273f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } finally { 1274f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani db.endTransaction(); 1275f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } 1276f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani } 1277f50c5113d0a426ba0a689b5a827f80bf9d2467e1Amith Yamasani 127854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 127954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Loads the default set of bookmarked shortcuts from an xml file. 128054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 128154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param db The database to write the values into 128254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 12836651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown private void loadBookmarks(SQLiteDatabase db) { 128454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(); 128554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 128654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project PackageManager packageManager = mContext.getPackageManager(); 1287f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy try { 1288f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy XmlResourceParser parser = mContext.getResources().getXml(R.xml.bookmarks); 128954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project XmlUtils.beginDocument(parser, "bookmarks"); 129054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1291f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy final int depth = parser.getDepth(); 1292f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy int type; 1293f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 1294f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy while (((type = parser.next()) != XmlPullParser.END_TAG || 1295f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { 1296f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 1297f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy if (type != XmlPullParser.START_TAG) { 1298f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy continue; 1299f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } 130054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 130154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String name = parser.getName(); 130254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!"bookmark".equals(name)) { 130354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 130454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 130554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 130654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String pkg = parser.getAttributeValue(null, "package"); 130754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String cls = parser.getAttributeValue(null, "class"); 130854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String shortcutStr = parser.getAttributeValue(null, "shortcut"); 13096651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown String category = parser.getAttributeValue(null, "category"); 1310f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 1311585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov int shortcutValue = shortcutStr.charAt(0); 131254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (TextUtils.isEmpty(shortcutStr)) { 131354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Unable to get shortcut for: " + pkg + "/" + cls); 13146651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown continue; 131554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1316f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 13176651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown final Intent intent; 13186651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown final String title; 13196651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown if (pkg != null && cls != null) { 13206651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown ActivityInfo info = null; 13216651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown ComponentName cn = new ComponentName(pkg, cls); 1322f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy try { 1323f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy info = packageManager.getActivityInfo(cn, 0); 13246651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } catch (PackageManager.NameNotFoundException e) { 13256651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown String[] packages = packageManager.canonicalToCurrentPackageNames( 13266651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown new String[] { pkg }); 13276651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown cn = new ComponentName(packages[0], cls); 13286651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown try { 13296651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown info = packageManager.getActivityInfo(cn, 0); 13306651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } catch (PackageManager.NameNotFoundException e1) { 13316651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown Log.w(TAG, "Unable to add bookmark: " + pkg + "/" + cls, e); 13326651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown continue; 13336651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } 1334f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } 13356651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown 13366651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown intent = new Intent(Intent.ACTION_MAIN, null); 13376651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown intent.addCategory(Intent.CATEGORY_LAUNCHER); 133854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project intent.setComponent(cn); 13396651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown title = info.loadLabel(packageManager).toString(); 13406651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } else if (category != null) { 1341f5b8671c340f189c50b41c53622f979b6d5e0a57Dianne Hackborn intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, category); 13426651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown title = ""; 13436651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown } else { 13446651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown Log.w(TAG, "Unable to add bookmark for shortcut " + shortcutStr 13456651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown + ": missing package/class or category attributes"); 13466651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown continue; 134754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 13486651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown 13496651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 13506651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown values.put(Settings.Bookmarks.INTENT, intent.toUri(0)); 13516651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown values.put(Settings.Bookmarks.TITLE, title); 13526651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown values.put(Settings.Bookmarks.SHORTCUT, shortcutValue); 13536651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown db.delete("bookmarks", "shortcut = ?", 13546651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown new String[] { Integer.toString(shortcutValue) }); 13556651a638348c15e89e265b0a53c775cac9beafa2Jeff Brown db.insert("bookmarks", null, values); 135654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 135754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (XmlPullParserException e) { 135854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got execption parsing bookmarks.", e); 135954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (IOException e) { 136054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got execption parsing bookmarks.", e); 136154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 136254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 136354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 136454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 136554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Loads the default volume levels. It is actually inserting the index of 136654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * the volume array for each of the volume controls. 136754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 136854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param db the database to insert the volume levels into 136954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 137054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadVolumeLevels(SQLiteDatabase db) { 137189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 137289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 137389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 137489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 13753c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 137689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_MUSIC, 137789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_MUSIC]); 137889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_RING, 137989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_RING]); 138089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_SYSTEM, 138189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_SYSTEM]); 138289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 138389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 138489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_VOICE, 138589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_VOICE_CALL]); 138689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_ALARM, 138789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_ALARM]); 138889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 138989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 139089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_NOTIFICATION, 139189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_NOTIFICATION]); 139289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 139389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 139489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_BLUETOOTH_SCO, 139589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]); 13963c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 139789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MODE_RINGER, 139889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.RINGER_MODE_NORMAL); 13993c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 1400c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // By default: 1401c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // - ringtones, notification, system and music streams are affected by ringer mode 1402c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // on non voice capable devices (tablets) 1403c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // - ringtones, notification and system streams are affected by ringer mode 1404c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent // on voice capable devices (phones) 1405c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent int ringerModeAffectedStreams = (1 << AudioManager.STREAM_RING) | 1406c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent (1 << AudioManager.STREAM_NOTIFICATION) | 1407c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent (1 << AudioManager.STREAM_SYSTEM) | 1408c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent (1 << AudioManager.STREAM_SYSTEM_ENFORCED); 1409c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent if (!mContext.getResources().getBoolean( 1410c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent com.android.internal.R.bool.config_voice_capable)) { 1411c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent ringerModeAffectedStreams |= (1 << AudioManager.STREAM_MUSIC); 1412c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent } 141389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED, 1414c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent ringerModeAffectedStreams); 1415c1d4166289ce016965d1147f7e8d37862ee347ecEric Laurent 141689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MUTE_STREAMS_AFFECTED, 141789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori ((1 << AudioManager.STREAM_MUSIC) | 141889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_RING) | 141989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_NOTIFICATION) | 142089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_SYSTEM))); 142189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 142289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 142389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 14243c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 14253c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa loadVibrateWhenRingingSetting(db); 142654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 142754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 142854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadVibrateSetting(SQLiteDatabase db, boolean deleteOld) { 142954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (deleteOld) { 143054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" + Settings.System.VIBRATE_ON + "'"); 143154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 14329bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 143389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 143489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 143589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 143689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 14373c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 14385cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani // Vibrate on by default for ringer, on for notification 143989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori int vibrate = 0; 144089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori vibrate = AudioService.getValueForVibrateSetting(vibrate, 14415cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani AudioManager.VIBRATE_TYPE_NOTIFICATION, 14425cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani AudioManager.VIBRATE_SETTING_ONLY_SILENT); 14438932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato vibrate |= AudioService.getValueForVibrateSetting(vibrate, 14445cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 144589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VIBRATE_ON, vibrate); 144689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 144789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 144889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 144954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 145054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 14513c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa private void loadVibrateWhenRingingSetting(SQLiteDatabase db) { 14523c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // The default should be off. VIBRATE_SETTING_ONLY_SILENT should also be ignored here. 14533c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // Phone app should separately check whether AudioManager#getRingerMode() returns 14543c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa // RINGER_MODE_VIBRATE, with which the device should vibrate anyway. 14553c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON, 14563c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa AudioManager.VIBRATE_SETTING_OFF); 14573c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa boolean vibrateWhenRinging = ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_ON); 14583c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 14593c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa SQLiteStatement stmt = null; 14603c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa try { 14613c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 14623c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa + " VALUES(?,?);"); 14633c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, vibrateWhenRinging ? 1 : 0); 14643c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } finally { 14653c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa if (stmt != null) stmt.close(); 14663c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } 14673c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa } 14683c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 146954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadSettings(SQLiteDatabase db) { 1470f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project loadSystemSettings(db); 14719bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh loadSecureSettings(db); 1472f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 14739bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 1474f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void loadSystemSettings(SQLiteDatabase db) { 147589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 147689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 147789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 147889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 14793c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 148089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.DIM_SCREEN, 148189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_dim_screen); 148289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.STAY_ON_WHILE_PLUGGED_IN, 14834b797dd8c1d059510b12957acc3bd0b236308bb3Mike Lockwood ("1".equals(SystemProperties.get("ro.kernel.qemu")) || 14844b797dd8c1d059510b12957acc3bd0b236308bb3Mike Lockwood mContext.getResources().getBoolean(R.bool.def_stay_on_while_plugged_in)) 14854b797dd8c1d059510b12957acc3bd0b236308bb3Mike Lockwood ? 1 : 0); 148689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 148789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_screen_off_timeout); 14883c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 148989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default cdma emergency tone 149089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.EMERGENCY_TONE, 0); 14913c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 149289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default cdma call auto retry 149389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.CALL_AUTO_RETRY, 0); 14943c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 149589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default cdma DTMF type 149689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0); 14973c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 149889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default hearing aid 149989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.HEARING_AID, 0); 15003c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 150189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default tty mode 150289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.TTY_MODE, 0); 15033c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 150489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.AIRPLANE_MODE_ON, 150589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_airplane_mode_on); 15063c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 150789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_RADIOS, 150889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.string.def_airplane_mode_radios); 15093c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 151089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 151189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.string.airplane_mode_toggleable_radios); 15123c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 151389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.AUTO_TIME, 151489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_auto_time); // Sync time to NITZ 1515ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani 1516ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani loadBooleanSetting(stmt, Settings.System.AUTO_TIME_ZONE, 1517ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani R.bool.def_auto_time_zone); // Sync timezone to NITZ 1518ad450be78bb99a965b6aeb7cec04f865da59f052Amith Yamasani 151989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS, 152089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_screen_brightness); 15213c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 152289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, 152389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_screen_brightness_automatic_mode); 15243c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 152589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadDefaultAnimationSettings(stmt); 15263c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 152789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION, 152889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_accelerometer_rotation); 15293c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 153089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadDefaultHapticSettings(stmt); 15313c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 153289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 153389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_notification_pulse); 153440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 0); 153540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Settings.Secure.DEFAULT_INSTALL_LOCATION, 153640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu PackageHelper.APP_INSTALL_AUTO); 153742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani 153889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadUISoundEffectsSettings(stmt); 153942722bfa136f5616872a2c4e199813e804621c81Amith Yamasani 15401a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown loadIntegerSetting(stmt, Settings.System.POINTER_SPEED, 15411a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown R.integer.def_pointer_speed); 15421a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown 154389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 154489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 154589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 1546f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 15479bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 15480e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler private void loadUISoundEffectsSettings(SQLiteStatement stmt) { 15490e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadIntegerSetting(stmt, Settings.System.POWER_SOUNDS_ENABLED, 15500e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.integer.def_power_sounds_enabled); 15510e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.LOW_BATTERY_SOUND, 15520e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_low_battery_sound); 155342722bfa136f5616872a2c4e199813e804621c81Amith Yamasani loadBooleanSetting(stmt, Settings.System.DTMF_TONE_WHEN_DIALING, 155442722bfa136f5616872a2c4e199813e804621c81Amith Yamasani R.bool.def_dtmf_tones_enabled); 155542722bfa136f5616872a2c4e199813e804621c81Amith Yamasani loadBooleanSetting(stmt, Settings.System.SOUND_EFFECTS_ENABLED, 155642722bfa136f5616872a2c4e199813e804621c81Amith Yamasani R.bool.def_sound_effects_enabled); 155742722bfa136f5616872a2c4e199813e804621c81Amith Yamasani loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED, 155842722bfa136f5616872a2c4e199813e804621c81Amith Yamasani R.bool.def_haptic_feedback); 15590e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 15600e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadIntegerSetting(stmt, Settings.System.DOCK_SOUNDS_ENABLED, 15610e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.integer.def_dock_sounds_enabled); 15620e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.DESK_DOCK_SOUND, 15630e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_desk_dock_sound); 15640e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.DESK_UNDOCK_SOUND, 15650e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_desk_undock_sound); 15660e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.CAR_DOCK_SOUND, 15670e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_car_dock_sound); 15680e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.CAR_UNDOCK_SOUND, 15690e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_car_undock_sound); 15700e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 15710e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadIntegerSetting(stmt, Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 15720e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.integer.def_lockscreen_sounds_enabled); 15730e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.LOCK_SOUND, 15740e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_lock_sound); 15750e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.UNLOCK_SOUND, 15760e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_unlock_sound); 15770e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 15780e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 15799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadDefaultAnimationSettings(SQLiteStatement stmt) { 15809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadFractionSetting(stmt, Settings.System.WINDOW_ANIMATION_SCALE, 15819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project R.fraction.def_window_animation_scale, 1); 15829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadFractionSetting(stmt, Settings.System.TRANSITION_ANIMATION_SCALE, 15839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project R.fraction.def_window_transition_scale, 1); 15849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15859bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 1586075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn private void loadDefaultHapticSettings(SQLiteStatement stmt) { 1587075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED, 1588075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn R.bool.def_haptic_feedback); 1589075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 1590075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn 1591f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void loadSecureSettings(SQLiteDatabase db) { 159289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 159389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 159489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 159589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 15963c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 159789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.BLUETOOTH_ON, 159889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_bluetooth_on); 15993c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 160089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Data roaming default, based on build 160189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.DATA_ROAMING, 160289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "true".equalsIgnoreCase( 160389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SystemProperties.get("ro.com.android.dataroaming", 160489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "false")) ? 1 : 0); 16053c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 160689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, 160789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_install_non_market_apps); 16083c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 160989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, 161089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.string.def_location_providers_allowed); 16113c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 161289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.ASSISTED_GPS_ENABLED, 161389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.assisted_gps_enabled); 16143c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 161589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.Secure.NETWORK_PREFERENCE, 161689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_network_preference); 16173c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 161889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.USB_MASS_STORAGE_ENABLED, 161989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_usb_mass_storage_enabled); 16203c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 162189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.WIFI_ON, 162289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_wifi_on); 162389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 162489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_networks_available_notification_on); 16253c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 162689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); 162789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (!TextUtils.isEmpty(wifiWatchList)) { 162889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.WIFI_WATCHDOG_WATCH_LIST, wifiWatchList); 162989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 16303c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 163189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set the preferred network mode to 0 = Global, CDMA default 1632d6bcfd1cd081b9fe553976a0191a814b929c583eWink Saville int type; 1633d6bcfd1cd081b9fe553976a0191a814b929c583eWink Saville if (BaseCommands.getLteOnCdmaModeStatic() == Phone.LTE_ON_CDMA_TRUE) { 1634d6bcfd1cd081b9fe553976a0191a814b929c583eWink Saville type = Phone.NT_MODE_GLOBAL; 1635d6bcfd1cd081b9fe553976a0191a814b929c583eWink Saville } else { 1636d6bcfd1cd081b9fe553976a0191a814b929c583eWink Saville type = SystemProperties.getInt("ro.telephony.default_network", 1637d6bcfd1cd081b9fe553976a0191a814b929c583eWink Saville RILConstants.PREFERRED_NETWORK_MODE); 1638d6bcfd1cd081b9fe553976a0191a814b929c583eWink Saville } 163989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.PREFERRED_NETWORK_MODE, type); 16403c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 164189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Enable or disable Cell Broadcast SMS 164289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.CDMA_CELL_BROADCAST_SMS, 164389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED); 16443c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 164589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Don't do this. The SystemServer will initialize ADB_ENABLED from a 164689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // persistent system property instead. 164789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori //loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0); 16483c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 164989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Allow mock locations default, based on build 165089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION, 165189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0); 16523c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 165389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSecure35Settings(stmt); 16543c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 165589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND, 165689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_play_notification_snd); 16573c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 165889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_AUTOSTART, 165989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_autostart); 16603c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 166189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_PROMPT, 166289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_prompt); 16633c60eeb1332661833638c863b2978422c2846140Daisuke Miyakawa 166489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED, 166589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_notify_enabled); 1666585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 1667585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 1668585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.bool.def_accessibility_script_injection); 1669585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov 1670585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, 1671585f13f8dec4cbf55b3bc04d95425d647f0577b2Svetoslav Ganov R.string.def_accessibility_web_content_key_bindings); 1672d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook 1673d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook final int maxBytes = mContext.getResources().getInteger( 1674d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook R.integer.def_download_manager_max_bytes_over_mobile); 1675d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook if (maxBytes > 0) { 1676d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook loadSetting(stmt, Settings.Secure.DOWNLOAD_MAX_BYTES_OVER_MOBILE, 1677d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook Integer.toString(maxBytes)); 1678d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook } 1679d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook 1680d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook final int recommendedMaxBytes = mContext.getResources().getInteger( 1681d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook R.integer.def_download_manager_recommended_max_bytes_over_mobile); 1682d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook if (recommendedMaxBytes > 0) { 1683d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook loadSetting(stmt, Settings.Secure.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE, 1684d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook Integer.toString(recommendedMaxBytes)); 1685d99d0dc43a3c26c77dd22e405efbdf0753d8309ePaul Westbrook } 168654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov 168754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov loadIntegerSetting(stmt, Settings.Secure.LONG_PRESS_TIMEOUT, 168854d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov R.integer.def_long_press_timeout_millis); 1689a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov 1690a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1691a28a16d1c2b58999d757a4cd3bc66a2f3499a2ebSvetoslav Ganov R.bool.def_touch_exploration_enabled); 169255f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov 169355f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 169455f937abe1a4fedb86c2679c66f0b5220ec3780eSvetoslav Ganov R.bool.def_accessibility_speak_password); 16953ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov 16963ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov loadStringSetting(stmt, Settings.Secure.ACCESSIBILITY_SCREEN_READER_URL, 16973ca5a74c17a27e44ce13b39bc2f63edaa88c3ef5Svetoslav Ganov R.string.def_accessibility_screen_reader_url); 169886aeb06635ef8c7f3fb1b4a935d5e8da819e2a88Mike Lockwood 169986aeb06635ef8c7f3fb1b4a935d5e8da819e2a88Mike Lockwood loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, 170086aeb06635ef8c7f3fb1b4a935d5e8da819e2a88Mike Lockwood R.bool.def_lockscreen_disabled); 17012395527c9bb1cdc3bcd3dfcbc8b72b90ed3e7080Mike Lockwood 17022395527c9bb1cdc3bcd3dfcbc8b72b90ed3e7080Mike Lockwood loadBooleanSetting(stmt, Settings.Secure.DEVICE_PROVISIONED, 17032395527c9bb1cdc3bcd3dfcbc8b72b90ed3e7080Mike Lockwood R.bool.def_device_provisioned); 1704d3c5e1eca12f4ca618e3f671dc6fae48307ec895Mike Lockwood 1705d3c5e1eca12f4ca618e3f671dc6fae48307ec895Mike Lockwood loadBooleanSetting(stmt, Settings.Secure.NETSTATS_ENABLED, 1706d3c5e1eca12f4ca618e3f671dc6fae48307ec895Mike Lockwood R.bool.def_netstats_enabled); 170779f5a0416fe76d5063b4d9995edd84a49b77995eMike Lockwood 170879f5a0416fe76d5063b4d9995edd84a49b77995eMike Lockwood loadIntegerSetting(stmt, Settings.Secure.WIFI_MAX_DHCP_RETRY_COUNT, 170979f5a0416fe76d5063b4d9995edd84a49b77995eMike Lockwood R.integer.def_max_dhcp_retries); 171089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 171189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 17129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 171354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 171454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1715cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn private void loadSecure35Settings(SQLiteStatement stmt) { 1716cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadBooleanSetting(stmt, Settings.Secure.BACKUP_ENABLED, 1717cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn R.bool.def_backup_enabled); 171831f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller 1719cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadStringSetting(stmt, Settings.Secure.BACKUP_TRANSPORT, 1720cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn R.string.def_backup_transport); 1721cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } 17226176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 172354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadSetting(SQLiteStatement stmt, String key, Object value) { 172454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.bindString(1, key); 172554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.bindString(2, value.toString()); 172654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.execute(); 172754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 17289bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 17299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadStringSetting(SQLiteStatement stmt, String key, int resid) { 17309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, mContext.getResources().getString(resid)); 17319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17329bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 17339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadBooleanSetting(SQLiteStatement stmt, String key, int resid) { 17349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 17359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mContext.getResources().getBoolean(resid) ? "1" : "0"); 17369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17379bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 17389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadIntegerSetting(SQLiteStatement stmt, String key, int resid) { 17399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 17409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Integer.toString(mContext.getResources().getInteger(resid))); 17419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17429bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 17439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadFractionSetting(SQLiteStatement stmt, String key, int resid, int base) { 17449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 17459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Float.toString(mContext.getResources().getFraction(resid, base, base))); 17469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17475cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani 17485cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani private int getIntValueFromSystem(SQLiteDatabase db, String name, int defaultValue) { 17498631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov return getIntValueFromTable(db, "system", name, defaultValue); 17508631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 17518631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov 17528631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov private int getIntValueFromTable(SQLiteDatabase db, String table, String name, 17538631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov int defaultValue) { 17548631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov String value = getStringValueFromTable(db, table, name, null); 17558631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov return (value != null) ? Integer.parseInt(value) : defaultValue; 17568631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov } 17578631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov 17588631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov private String getStringValueFromTable(SQLiteDatabase db, String table, String name, 17598631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov String defaultValue) { 17605cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani Cursor c = null; 17615cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani try { 17628631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov c = db.query(table, new String[] { Settings.System.VALUE }, "name='" + name + "'", 17635cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani null, null, null, null); 17645cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani if (c != null && c.moveToFirst()) { 17655cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani String val = c.getString(0); 17668631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov return val == null ? defaultValue : val; 17675cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } 17685cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } finally { 17695cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani if (c != null) c.close(); 17705cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } 17718631701bb770f3a4e3b2a139dc282f2244fe86e6Svetoslav Ganov return defaultValue; 17725cd1500cc4229fa6a8ddb5c70b055bb2c936c650Amith Yamasani } 177354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 1774