summaryrefslogtreecommitdiffstats
path: root/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java')
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java60
1 files changed, 59 insertions, 1 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index c8ce3cd..06c8e11 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -68,7 +68,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
// database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
// is properly propagated through your change. Not doing so will result in a loss of user
// settings.
- private static final int DATABASE_VERSION = 89;
+ private static final int DATABASE_VERSION = 90;
private Context mContext;
private int mUserHandle;
@@ -1380,6 +1380,26 @@ public class DatabaseHelper extends SQLiteOpenHelper {
upgradeVersion = 89;
}
+ if (upgradeVersion == 89) {
+ if (mUserHandle == UserHandle.USER_OWNER) {
+ db.beginTransaction();
+ try {
+ String[] prefixesToMove = {
+ Settings.Global.BLUETOOTH_HEADSET_PRIORITY_PREFIX,
+ Settings.Global.BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX,
+ Settings.Global.BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX,
+ };
+
+ movePrefixedSettingsToNewTable(db, TABLE_SECURE, TABLE_GLOBAL, prefixesToMove);
+
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ }
+ }
+ upgradeVersion = 90;
+ }
+
// *** Remember to update DATABASE_VERSION above!
if (upgradeVersion != currentVersion) {
@@ -1446,6 +1466,44 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
}
+ /**
+ * Move any settings with the given prefixes from the source table to the
+ * destination table.
+ */
+ private void movePrefixedSettingsToNewTable(
+ SQLiteDatabase db, String sourceTable, String destTable, String[] prefixesToMove) {
+ SQLiteStatement insertStmt = null;
+ SQLiteStatement deleteStmt = null;
+
+ db.beginTransaction();
+ try {
+ insertStmt = db.compileStatement("INSERT INTO " + destTable
+ + " (name,value) SELECT name,value FROM " + sourceTable
+ + " WHERE substr(name,0,?)=?");
+ deleteStmt = db.compileStatement(
+ "DELETE FROM " + sourceTable + " WHERE substr(name,0,?)=?");
+
+ for (String prefix : prefixesToMove) {
+ insertStmt.bindLong(1, prefix.length() + 1);
+ insertStmt.bindString(2, prefix);
+ insertStmt.execute();
+
+ deleteStmt.bindLong(1, prefix.length() + 1);
+ deleteStmt.bindString(2, prefix);
+ deleteStmt.execute();
+ }
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ if (insertStmt != null) {
+ insertStmt.close();
+ }
+ if (deleteStmt != null) {
+ deleteStmt.close();
+ }
+ }
+ }
+
private void upgradeLockPatternLocation(SQLiteDatabase db) {
Cursor c = db.query(TABLE_SYSTEM, new String[] {"_id", "value"}, "name='lock_pattern'",
null, null, null, null);