DatabaseHelper.java revision 24117ce3ae32c40798d2d9bda80675814f76730d
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; 24a9c1625e71ddd7a9cdaf9d1720be8c58e4809fa6Suchi Amalapurapuimport android.content.pm.PackageInfo; 2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.content.pm.PackageManager; 26f02811f7853202c0934622702ebb9c82e6ab0592Romain Guyimport android.content.res.XmlResourceParser; 2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.Cursor; 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase; 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteOpenHelper; 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.database.sqlite.SQLiteStatement; 3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.media.AudioManager; 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.media.AudioService; 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.net.ConnectivityManager; 3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.os.SystemProperties; 3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.provider.Settings; 36156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasaniimport android.provider.Settings.Secure; 3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.text.TextUtils; 38f02811f7853202c0934622702ebb9c82e6ab0592Romain Guyimport android.util.AttributeSet; 3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Config; 4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Log; 4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport android.util.Xml; 4240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu 4340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapuimport com.android.internal.content.PackageHelper; 4404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savilleimport com.android.internal.telephony.RILConstants; 452269d1572e5fcfb725ea55f5764d8c3280d69f6dDianne Hackbornimport com.android.internal.util.XmlUtils; 4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport com.android.internal.widget.LockPatternUtils; 4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport com.android.internal.widget.LockPatternView; 4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport org.xmlpull.v1.XmlPullParser; 4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport org.xmlpull.v1.XmlPullParserException; 5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.io.IOException; 5224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackbornimport java.util.HashSet; 5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectimport java.util.List; 5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project/** 5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Database helper class for {@link SettingsProvider}. 5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Mostly just has a bit {@link #onCreate} to initialize the database. 5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 59074da8f9aa424b25d84f4e4eb762ca534ea96716James Wylderpublic class DatabaseHelper extends SQLiteOpenHelper { 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String TAG = "SettingsProvider"; 6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private static final String DATABASE_NAME = "settings.db"; 62f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller 63f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // Please, please please. If you update the database version, check to make sure the 64f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' 65f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // is properly propagated through your change. Not doing so will result in a loss of user 66f186055a53758fd4112ab3c470cda6337a18fa33Jim Miller // settings. 6740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu private static final int DATABASE_VERSION = 56; 689bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private Context mContext; 7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 7124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn private static final HashSet<String> mValidTables = new HashSet<String>(); 7224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 7324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn static { 7424117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("system"); 7524117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("secure"); 7624117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("bluetooth_devices"); 7724117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("bookmarks"); 7824117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 7924117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn // These are old. 8024117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("favorites"); 8124117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("gservices"); 8224117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn mValidTables.add("old_favorites"); 8324117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn } 8424117ce3ae32c40798d2d9bda80675814f76730dDianne Hackborn 8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project public DatabaseHelper(Context context) { 8654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project super(context, DATABASE_NAME, null, DATABASE_VERSION); 8754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project mContext = context; 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) { 447951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy db.beginTransaction(); 448951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy try { 449951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy String value = 450951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy mContext.getResources().getBoolean( 451951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy R.bool.def_screen_brightness_automatic_mode) ? "1" : "0"; 452951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy db.execSQL("INSERT OR IGNORE INTO system(name,value) values('" + 453951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy Settings.System.SCREEN_BRIGHTNESS_MODE + "','" + value + "');"); 454951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy db.setTransactionSuccessful(); 455951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy } finally { 456951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy db.endTransaction(); 457951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy } 458951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy 459951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy upgradeVersion = 40; 460951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy } 461951764b97010dfa073126f52b43ea1bdf1b35998Dan Murphy 462bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn if (upgradeVersion == 40) { 463bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn /* 464bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn * All animations are now turned on by default! 465bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn */ 466bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.beginTransaction(); 46789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 468bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn try { 469bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 470bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + Settings.System.WINDOW_ANIMATION_SCALE + "'"); 471bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 472bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + Settings.System.TRANSITION_ANIMATION_SCALE + "'"); 47389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 474bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn + " VALUES(?,?);"); 475bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn loadDefaultAnimationSettings(stmt); 476bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.setTransactionSuccessful(); 477bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } finally { 478bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn db.endTransaction(); 47989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 480bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } 481bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn upgradeVersion = 41; 482bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn } 483bfe319e06aa56c081d0d94d64a8181291d7f7388Dianne Hackborn 484075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn if (upgradeVersion == 41) { 485075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn /* 486075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn * Initialize newly public haptic feedback setting 487075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn */ 488075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.beginTransaction(); 48989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 490075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn try { 491075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.execSQL("DELETE FROM system WHERE name='" 492075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn + Settings.System.HAPTIC_FEEDBACK_ENABLED + "'"); 49389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 494075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn + " VALUES(?,?);"); 495075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn loadDefaultHapticSettings(stmt); 496075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.setTransactionSuccessful(); 497075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } finally { 498075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn db.endTransaction(); 49989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 500075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 501075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn upgradeVersion = 42; 502075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 503075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn 504ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani if (upgradeVersion == 42) { 505ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani /* 506ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani * Initialize new notification pulse setting 507ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani */ 508ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.beginTransaction(); 50989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 510ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani try { 51189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 512ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani + " VALUES(?,?);"); 513ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 514ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani R.bool.def_notification_pulse); 515ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.setTransactionSuccessful(); 516ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } finally { 517ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani db.endTransaction(); 51889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 519ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } 520ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani upgradeVersion = 43; 521ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani } 522ae3ed706702a5ebe6ffcc08b941b1401c9a24b89Amith Yamasani 523484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent if (upgradeVersion == 43) { 524484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent /* 525484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent * This upgrade stores bluetooth volume separately from voice volume 526484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent */ 527484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.beginTransaction(); 52889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 529484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent try { 53089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 531484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent + " VALUES(?,?);"); 532484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO, 533484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]); 534484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.setTransactionSuccessful(); 535484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } finally { 536484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent db.endTransaction(); 53789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 538484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } 539484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent upgradeVersion = 44; 540484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent } 541484d2888680e18e6ad8c3fcc51e3b70a705a096eEric Laurent 542aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker if (upgradeVersion == 44) { 543aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker /* 544aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker * Gservices was moved into vendor/google. 545aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker */ 546aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker db.execSQL("DROP TABLE IF EXISTS gservices"); 547aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 548aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker upgradeVersion = 45; 549aed8f8eb1491a21c8c71d39258b70edb74533a62Doug Zongker } 55087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat 55187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat if (upgradeVersion == 45) { 55287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat /* 55387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat * New settings for MountService 55487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat */ 55587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.beginTransaction(); 55687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat try { 55787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 55887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND + "','1');"); 55987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 56087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_AUTOSTART + "','0');"); 56187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 56287734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_PROMPT + "','1');"); 56387734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.execSQL("INSERT INTO secure(name,value) values('" + 56487734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED + "','1');"); 56587734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.setTransactionSuccessful(); 56687734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } finally { 56787734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat db.endTransaction(); 56887734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } 56987734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat upgradeVersion = 46; 57087734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat } 57187734d3bc118cba8f42845ddd51f10edadb84abfSan Mehat 572df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn if (upgradeVersion == 46) { 573df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn /* 574df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn * The password mode constants have changed; reset back to no 575df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn * password. 576df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn */ 577df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.beginTransaction(); 578df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn try { 579df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 580df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.setTransactionSuccessful(); 581df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } finally { 582df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn db.endTransaction(); 583df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } 584df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn upgradeVersion = 47; 585df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn } 586df83afaf299666e99c519aa86e7e082b7c116e95Dianne Hackborn 5876176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 5889327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn if (upgradeVersion == 47) { 5899327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn /* 5909327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn * The password mode constants have changed again; reset back to no 5919327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn * password. 5929327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn */ 5939327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.beginTransaction(); 5949327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn try { 5959327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.execSQL("DELETE FROM system WHERE name='lockscreen.password_type';"); 5969327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.setTransactionSuccessful(); 5979327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } finally { 5989327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn db.endTransaction(); 5999327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } 6009327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn upgradeVersion = 48; 6019327f4f671de3cbb795612bf4f314ceff88de865Dianne Hackborn } 6026176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 6035d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau if (upgradeVersion == 48) { 6045d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau /* 60521f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn * Default recognition service no longer initialized here, 60621f1bd17b2dfe361acbb28453b3f3b1a110932faDianne Hackborn * moved to RecognitionManagerService. 6075d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau */ 6085d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau upgradeVersion = 49; 6095d34e9b63d5305934dcedac11e8dd658ae23c174Mike LeBeau } 61031f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller 6110e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler if (upgradeVersion == 49) { 6120e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler /* 6130e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler * New settings for new user interface noises. 6140e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler */ 6150e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.beginTransaction(); 61689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 6170e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler try { 61889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 6190e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler + " VALUES(?,?);"); 6200e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadUISoundEffectsSettings(stmt); 6210e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.setTransactionSuccessful(); 6220e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } finally { 6230e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler db.endTransaction(); 62489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 6250e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 6260e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 6270e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler upgradeVersion = 50; 6280e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 6290e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 630f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor if (upgradeVersion == 50) { 631f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor /* 63240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu * Install location no longer initiated here. 633f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor */ 634f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor upgradeVersion = 51; 635f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor } 636f1cbfff03ac53be9475f419d16a2e79b6c28a494Oscar Montemayor 637156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (upgradeVersion == 51) { 638156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani /* Move the lockscreen related settings to Secure, including some private ones. */ 639156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani String[] settingsToMove = { 640156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_ENABLED, 641156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_VISIBLE, 642156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, 643156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.password_type", 644156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.lockoutattemptdeadline", 645156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.patterneverchosen", 646156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lock_pattern_autolock", 647156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.lockedoutpermanently", 648156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani "lockscreen.password_salt" 649156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani }; 650156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani moveFromSystemToSecure(db, settingsToMove); 651156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani upgradeVersion = 52; 652156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 653156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 6541c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler if (upgradeVersion == 52) { 6551c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler // new vibration/silent mode settings 6561c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.beginTransaction(); 65789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 6581c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler try { 65989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT INTO system(name,value)" 6601c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler + " VALUES(?,?);"); 6611c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 6621c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler R.bool.def_vibrate_in_silent); 6631c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.setTransactionSuccessful(); 6641c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } finally { 6651c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler db.endTransaction(); 66689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 6671c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } 6681c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 6691c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler upgradeVersion = 53; 6701c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler } 671089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu 672089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu if (upgradeVersion == 53) { 673089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu /* 67440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu * New settings for set install location UI no longer initiated here. 675089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu */ 676089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu upgradeVersion = 54; 677089262dc022d87e31eefc536025be6c015c7ebdeSuchi Amalapurapu } 6781c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 679b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (upgradeVersion == 54) { 680b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani /* 681b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani * Update the screen timeout value if set to never 682b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani */ 683b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.beginTransaction(); 684b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani try { 685b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani upgradeScreenTimeoutFromNever(db); 686b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.setTransactionSuccessful(); 687b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } finally { 688b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani db.endTransaction(); 689b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 690b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 691b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani upgradeVersion = 55; 692b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 693b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 69440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu if (upgradeVersion == 55) { 69540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu /* Move the install location settings. */ 69640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu String[] settingsToMove = { 69740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu Secure.SET_INSTALL_LOCATION, 69840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu Secure.DEFAULT_INSTALL_LOCATION 69940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu }; 70040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu moveFromSystemToSecure(db, settingsToMove); 70140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.beginTransaction(); 70240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu SQLiteStatement stmt = null; 70340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu try { 70440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu stmt = db.compileStatement("INSERT INTO system(name,value)" 70540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu + " VALUES(?,?);"); 70640e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Secure.SET_INSTALL_LOCATION, 0); 70740e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Secure.DEFAULT_INSTALL_LOCATION, 70840e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu PackageHelper.APP_INSTALL_AUTO); 70940e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.setTransactionSuccessful(); 71040e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } finally { 71140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu db.endTransaction(); 71240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu if (stmt != null) stmt.close(); 71340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } 71440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu upgradeVersion = 56; 71540e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu } 7161c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler // *** Remember to update DATABASE_VERSION above! 7171c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler 7181c7fa4836bfa7ff61f176461ca0557e90f714121Daniel Sandler if (upgradeVersion != currentVersion) { 71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project + ", must wipe the settings provider"); 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS system"); 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS systemIndex1"); 723f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS secure"); 724f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS secureIndex1"); 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS gservices"); 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS gservicesIndex1"); 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS bluetooth_devices"); 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS bookmarks"); 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS bookmarksIndex1"); 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP INDEX IF EXISTS bookmarksIndex2"); 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DROP TABLE IF EXISTS favorites"); 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project onCreate(db); 7336176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 7346176677e01964cb5751ff217c091571ce6a8b5fbJim Miller // Added for diagnosing settings.db wipes after the fact 7356176677e01964cb5751ff217c091571ce6a8b5fbJim Miller String wipeReason = oldVersion + "/" + upgradeVersion + "/" + currentVersion; 7366176677e01964cb5751ff217c091571ce6a8b5fbJim Miller db.execSQL("INSERT INTO secure(name,value) values('" + 7376176677e01964cb5751ff217c091571ce6a8b5fbJim Miller "wiped_db_reason" + "','" + wipeReason + "');"); 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 741156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani private void moveFromSystemToSecure(SQLiteDatabase db, String [] settingsToMove) { 742156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani // Copy settings values from 'system' to 'secure' and delete them from 'system' 743156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani SQLiteStatement insertStmt = null; 744156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani SQLiteStatement deleteStmt = null; 745156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 746156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.beginTransaction(); 747156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani try { 748156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt = 749156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.compileStatement("INSERT INTO secure (name,value) SELECT name,value FROM " 750156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani + "system WHERE name=?"); 751156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt = db.compileStatement("DELETE FROM system WHERE name=?"); 752156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 753156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 754156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani for (String setting : settingsToMove) { 755156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.bindString(1, setting); 756156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.execute(); 757156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 758156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.bindString(1, setting); 759156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.execute(); 760156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 761156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.setTransactionSuccessful(); 762156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } finally { 763156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani db.endTransaction(); 764156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (insertStmt != null) { 765156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani insertStmt.close(); 766156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 767156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani if (deleteStmt != null) { 768156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani deleteStmt.close(); 769156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 770156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 771156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani } 772156c43545529fb3d731ffdd9c4514d38758e3f06Amith Yamasani 77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void upgradeLockPatternLocation(SQLiteDatabase db) { 7749bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh Cursor c = db.query("system", new String[] {"_id", "value"}, "name='lock_pattern'", 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project null, null, null, null); 77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (c.getCount() > 0) { 77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.moveToFirst(); 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String lockPattern = c.getString(1); 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!TextUtils.isEmpty(lockPattern)) { 78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Convert lock pattern 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 78231f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller LockPatternUtils lpu = new LockPatternUtils(mContext); 7839bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh List<LockPatternView.Cell> cellPattern = 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project LockPatternUtils.stringToPattern(lockPattern); 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project lpu.saveLockPattern(cellPattern); 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (IllegalArgumentException e) { 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project // Don't want corrupted lock pattern to hang the reboot process 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.close(); 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.delete("system", "name='lock_pattern'", null); 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c.close(); 79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 797b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani private void upgradeScreenTimeoutFromNever(SQLiteDatabase db) { 798b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani // See if the timeout is -1 (for "Never"). 799b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani Cursor c = db.query("system", new String[] { "_id", "value" }, "name=? AND value=?", 800b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani new String[] { Settings.System.SCREEN_OFF_TIMEOUT, "-1" }, 801b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani null, null, null); 802b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 803b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani SQLiteStatement stmt = null; 804b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (c.getCount() > 0) { 805b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani c.close(); 806b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani try { 807b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" 808b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani + " VALUES(?,?);"); 809b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 810b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani // Set the timeout to 30 minutes in milliseconds 811cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 812cd66caf015d18baa03a86796649550cb65cd99eaAmith Yamasani Integer.toString(30 * 60 * 1000)); 813b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } finally { 814b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani if (stmt != null) stmt.close(); 815b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 816b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } else { 817b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani c.close(); 818b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 819b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani } 820b6e6ffae3564f0c8935cd2d307ffa4d17c57f992Amith Yamasani 82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Loads the default set of bookmarked shortcuts from an xml file. 82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param db The database to write the values into 82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param startingIndex The zero-based position at which bookmarks in this file should begin 82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 827f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy private int loadBookmarks(SQLiteDatabase db, int startingIndex) { 82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Intent intent = new Intent(Intent.ACTION_MAIN, null); 82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project intent.addCategory(Intent.CATEGORY_LAUNCHER); 83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ContentValues values = new ContentValues(); 83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project PackageManager packageManager = mContext.getPackageManager(); 83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int i = startingIndex; 83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 835f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy try { 836f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy XmlResourceParser parser = mContext.getResources().getXml(R.xml.bookmarks); 83754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project XmlUtils.beginDocument(parser, "bookmarks"); 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 839f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy final int depth = parser.getDepth(); 840f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy int type; 841f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 842f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy while (((type = parser.next()) != XmlPullParser.END_TAG || 843f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { 844f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 845f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy if (type != XmlPullParser.START_TAG) { 846f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy continue; 847f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String name = parser.getName(); 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (!"bookmark".equals(name)) { 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project break; 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String pkg = parser.getAttributeValue(null, "package"); 85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String cls = parser.getAttributeValue(null, "class"); 85654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project String shortcutStr = parser.getAttributeValue(null, "shortcut"); 857f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 85854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int shortcutValue = (int) shortcutStr.charAt(0); 85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (TextUtils.isEmpty(shortcutStr)) { 86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Unable to get shortcut for: " + pkg + "/" + cls); 86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 862f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 863f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy ActivityInfo info = null; 864f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy ComponentName cn = new ComponentName(pkg, cls); 86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project try { 86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project info = packageManager.getActivityInfo(cn, 0); 867f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } catch (PackageManager.NameNotFoundException e) { 868f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy String[] packages = packageManager.canonicalToCurrentPackageNames( 869f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy new String[] { pkg }); 870f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy cn = new ComponentName(packages[0], cls); 871f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy try { 872f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy info = packageManager.getActivityInfo(cn, 0); 873f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } catch (PackageManager.NameNotFoundException e1) { 874f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy Log.w(TAG, "Unable to add bookmark: " + pkg + "/" + cls, e); 875f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } 876f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy } 877f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy 878f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy if (info != null) { 87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project intent.setComponent(cn); 88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 881f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy values.put(Settings.Bookmarks.INTENT, intent.toUri(0)); 88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(Settings.Bookmarks.TITLE, 88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project info.loadLabel(packageManager).toString()); 88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project values.put(Settings.Bookmarks.SHORTCUT, shortcutValue); 88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.insert("bookmarks", null, values); 88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project i++; 88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (XmlPullParserException e) { 89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got execption parsing bookmarks.", e); 89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } catch (IOException e) { 89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Log.w(TAG, "Got execption parsing bookmarks.", e); 89354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 89554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return i; 89654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 89854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 89954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Loads the default set of bookmark packages. 90054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 90154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param db The database to write the values into 90254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 90354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadBookmarks(SQLiteDatabase db) { 904f02811f7853202c0934622702ebb9c82e6ab0592Romain Guy loadBookmarks(db, 0); 90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project /** 90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * Loads the default volume levels. It is actually inserting the index of 90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * the volume array for each of the volume controls. 91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * 91154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project * @param db the database to insert the volume levels into 91254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project */ 91354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadVolumeLevels(SQLiteDatabase db) { 91489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 91589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 91689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 91789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 91889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 91989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_MUSIC, 92089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_MUSIC]); 92189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_RING, 92289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_RING]); 92389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_SYSTEM, 92489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_SYSTEM]); 92589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 92689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 92789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_VOICE, 92889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_VOICE_CALL]); 92989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VOLUME_ALARM, 93089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_ALARM]); 93189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 93289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 93389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_NOTIFICATION, 93489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_NOTIFICATION]); 93589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting( 93689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt, 93789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori Settings.System.VOLUME_BLUETOOTH_SCO, 93889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]); 93989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 94089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MODE_RINGER, 94189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.RINGER_MODE_NORMAL); 94289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 94389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadVibrateSetting(db, false); 94489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 94589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // By default, only the ring/notification and system streams are affected 94689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MODE_RINGER_STREAMS_AFFECTED, 94789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_RING) | (1 << AudioManager.STREAM_NOTIFICATION) | 94889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_SYSTEM) | (1 << AudioManager.STREAM_SYSTEM_ENFORCED)); 94989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 95089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.MUTE_STREAMS_AFFECTED, 95189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori ((1 << AudioManager.STREAM_MUSIC) | 95289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_RING) | 95389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_NOTIFICATION) | 95489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori (1 << AudioManager.STREAM_SYSTEM))); 95589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 95689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 95789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 95854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 95954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 96054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadVibrateSetting(SQLiteDatabase db, boolean deleteOld) { 96154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (deleteOld) { 96254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project db.execSQL("DELETE FROM system WHERE name='" + Settings.System.VIBRATE_ON + "'"); 96354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 9649bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 96589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 96689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 96789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 96889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 96989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 97089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Vibrate off by default for ringer, on for notification 97189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori int vibrate = 0; 97289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori vibrate = AudioService.getValueForVibrateSetting(vibrate, 97389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); 97489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori vibrate = AudioService.getValueForVibrateSetting(vibrate, 97589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); 97689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.VIBRATE_ON, vibrate); 97789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 97889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 97989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 98054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 98154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 98254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadSettings(SQLiteDatabase db) { 983f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project loadSystemSettings(db); 9849bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh loadSecureSettings(db); 985f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 9869bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 987f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void loadSystemSettings(SQLiteDatabase db) { 98889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 98989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 99089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" 99189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 99289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 99389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.DIM_SCREEN, 99489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_dim_screen); 99589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.STAY_ON_WHILE_PLUGGED_IN, 99689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "1".equals(SystemProperties.get("ro.kernel.qemu")) ? 1 : 0); 99789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, 99889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_screen_off_timeout); 99989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 100089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default cdma emergency tone 100189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.EMERGENCY_TONE, 0); 100289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 100389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default cdma call auto retry 100489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.CALL_AUTO_RETRY, 0); 100589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 100689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default cdma DTMF type 100789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0); 100889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 100989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default hearing aid 101089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.HEARING_AID, 0); 101189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 101289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set default tty mode 101389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.System.TTY_MODE, 0); 101489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 101589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.AIRPLANE_MODE_ON, 101689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_airplane_mode_on); 101789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 101889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_RADIOS, 101989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.string.def_airplane_mode_radios); 102089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 102189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, 102289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.string.airplane_mode_toggleable_radios); 102389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 102489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.AUTO_TIME, 102589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_auto_time); // Sync time to NITZ 102689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 102789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS, 102889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_screen_brightness); 102989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 103089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, 103189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_screen_brightness_automatic_mode); 103289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 103389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadDefaultAnimationSettings(stmt); 103489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 103589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION, 103689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_accelerometer_rotation); 103789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 103889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadDefaultHapticSettings(stmt); 103989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 104089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, 104189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_notification_pulse); 104240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 0); 104340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu loadSetting(stmt, Settings.Secure.DEFAULT_INSTALL_LOCATION, 104440e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu PackageHelper.APP_INSTALL_AUTO); 104589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 104689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadUISoundEffectsSettings(stmt); 104789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 104889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT, 104989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_vibrate_in_silent); 105089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 105189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 105289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 1053f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project } 10549bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 10550e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler private void loadUISoundEffectsSettings(SQLiteStatement stmt) { 10560e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadIntegerSetting(stmt, Settings.System.POWER_SOUNDS_ENABLED, 10570e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.integer.def_power_sounds_enabled); 10580e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.LOW_BATTERY_SOUND, 10590e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_low_battery_sound); 10600e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 10610e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadIntegerSetting(stmt, Settings.System.DOCK_SOUNDS_ENABLED, 10620e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.integer.def_dock_sounds_enabled); 10630e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.DESK_DOCK_SOUND, 10640e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_desk_dock_sound); 10650e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.DESK_UNDOCK_SOUND, 10660e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_desk_undock_sound); 10670e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.CAR_DOCK_SOUND, 10680e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_car_dock_sound); 10690e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.CAR_UNDOCK_SOUND, 10700e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_car_undock_sound); 10710e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 10720e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadIntegerSetting(stmt, Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 10730e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.integer.def_lockscreen_sounds_enabled); 10740e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.LOCK_SOUND, 10750e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_lock_sound); 10760e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler loadStringSetting(stmt, Settings.System.UNLOCK_SOUND, 10770e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler R.string.def_unlock_sound); 10780e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler } 10790e9d2af2d60b381ba52d0c25e583b3d2a9906051Daniel Sandler 10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadDefaultAnimationSettings(SQLiteStatement stmt) { 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadFractionSetting(stmt, Settings.System.WINDOW_ANIMATION_SCALE, 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project R.fraction.def_window_animation_scale, 1); 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadFractionSetting(stmt, Settings.System.TRANSITION_ANIMATION_SCALE, 10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project R.fraction.def_window_transition_scale, 1); 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10869bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 1087075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn private void loadDefaultHapticSettings(SQLiteStatement stmt) { 1088075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED, 1089075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn R.bool.def_haptic_feedback); 1090075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn } 1091075a18d607c3aa8386b4d06aea22f4bfacbe447bDianne Hackborn 1092f013e1afd1e68af5e3b868c26a653bbfb39538f8The Android Open Source Project private void loadSecureSettings(SQLiteDatabase db) { 109389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SQLiteStatement stmt = null; 109489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori try { 109589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" 109689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori + " VALUES(?,?);"); 109789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 109889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.BLUETOOTH_ON, 109989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_bluetooth_on); 110089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 110189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Data roaming default, based on build 110289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.DATA_ROAMING, 110389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "true".equalsIgnoreCase( 110489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori SystemProperties.get("ro.com.android.dataroaming", 110589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "false")) ? 1 : 0); 110689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 110789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, 110889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_install_non_market_apps); 110989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 111089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, 111189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.string.def_location_providers_allowed); 111289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 111389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.ASSISTED_GPS_ENABLED, 111489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.assisted_gps_enabled); 111589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 111689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadIntegerSetting(stmt, Settings.Secure.NETWORK_PREFERENCE, 111789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.integer.def_network_preference); 111889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 111989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.USB_MASS_STORAGE_ENABLED, 112089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_usb_mass_storage_enabled); 112189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 112289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.WIFI_ON, 112389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_wifi_on); 112489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 112589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_networks_available_notification_on); 112689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 112789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); 112889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (!TextUtils.isEmpty(wifiWatchList)) { 112989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.WIFI_WATCHDOG_WATCH_LIST, wifiWatchList); 113089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } 113189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 113289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set the preferred network mode to 0 = Global, CDMA default 113389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori int type = SystemProperties.getInt("ro.telephony.default_network", 113489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori RILConstants.PREFERRED_NETWORK_MODE); 113589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.PREFERRED_NETWORK_MODE, type); 113689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 113789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Enable or disable Cell Broadcast SMS 113889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.CDMA_CELL_BROADCAST_SMS, 113989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED); 114089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 114189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Set the preferred cdma subscription to 0 = Subscription from RUIM, when available 114289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.PREFERRED_CDMA_SUBSCRIPTION, 114389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori RILConstants.PREFERRED_CDMA_SUBSCRIPTION); 114489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 114589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Don't do this. The SystemServer will initialize ADB_ENABLED from a 114689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // persistent system property instead. 114789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori //loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0); 114889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 114989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori // Allow mock locations default, based on build 115089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION, 115189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori "1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0); 115289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 115389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadSecure35Settings(stmt); 115489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 115589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND, 115689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_play_notification_snd); 115789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 115889206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_AUTOSTART, 115989206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_autostart); 116089206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 116189206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_PROMPT, 116289206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_prompt); 116389206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori 116489206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED, 116589206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori R.bool.def_mount_ums_notify_enabled); 116689206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori } finally { 116789206fdb3b75a8bc12ac75fc8a95a5c9c79c3220Vasu Nori if (stmt != null) stmt.close(); 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 116954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 117054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 1171cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn private void loadSecure35Settings(SQLiteStatement stmt) { 1172cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadBooleanSetting(stmt, Settings.Secure.BACKUP_ENABLED, 1173cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn R.bool.def_backup_enabled); 117431f90b62e8c83270094f5b0b4c75a0e06d72cd75Jim Miller 1175cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn loadStringSetting(stmt, Settings.Secure.BACKUP_TRANSPORT, 1176cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn R.string.def_backup_transport); 1177cf098294da7a820d5c30d8ed2006ed5446ee1da9Dianne Hackborn } 11786176677e01964cb5751ff217c091571ce6a8b5fbJim Miller 117954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project private void loadSetting(SQLiteStatement stmt, String key, Object value) { 118054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.bindString(1, key); 118154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.bindString(2, value.toString()); 118254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project stmt.execute(); 118354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 11849bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadStringSetting(SQLiteStatement stmt, String key, int resid) { 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, mContext.getResources().getString(resid)); 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11889bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadBooleanSetting(SQLiteStatement stmt, String key, int resid) { 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mContext.getResources().getBoolean(resid) ? "1" : "0"); 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11939bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadIntegerSetting(SQLiteStatement stmt, String key, int resid) { 11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Integer.toString(mContext.getResources().getInteger(resid))); 11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11989bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh 11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void loadFractionSetting(SQLiteStatement stmt, String key, int resid, int base) { 12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project loadSetting(stmt, key, 12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Float.toString(mContext.getResources().getFraction(resid, base, base))); 12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 120354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 1204