From 43ea7ac8ade3d6b6b354fc2f4623c14ac4e69020 Mon Sep 17 00:00:00 2001 From: Kenny Guy Date: Fri, 9 May 2014 16:44:18 +0100 Subject: Fix missing space in select statement in backup helper. Also check when backing up favourites that they are for current user. Change-Id: Ic9d496c30612ee531fa84a22f852b3012df00b4f --- .../android/launcher3/LauncherBackupHelper.java | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'src/com/android/launcher3/LauncherBackupHelper.java') diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java index 275fccc16..81ced7b3b 100644 --- a/src/com/android/launcher3/LauncherBackupHelper.java +++ b/src/com/android/launcher3/LauncherBackupHelper.java @@ -110,6 +110,7 @@ public class LauncherBackupHelper implements BackupHelper { Favorites.SPANX, // 14 Favorites.SPANY, // 15 Favorites.TITLE, // 16 + Favorites.PROFILE_ID, // 17 }; private static final int ID_INDEX = 0; @@ -129,6 +130,7 @@ public class LauncherBackupHelper implements BackupHelper { private static final int SPANX_INDEX = 14; private static final int SPANY_INDEX = 15; private static final int TITLE_INDEX = 16; + private static final int PROFILE_ID_INDEX = 17; private static final String[] SCREEN_PROJECTION = { WorkspaceScreens._ID, // 0 @@ -297,6 +299,11 @@ public class LauncherBackupHelper implements BackupHelper { Set savedIds = getSavedIdsByType(Key.FAVORITE, in); if (DEBUG) Log.d(TAG, "favorite savedIds.size()=" + savedIds.size()); + // Don't backup apps in other profiles for now. + UserHandleCompat myUserHandle = UserHandleCompat.myUserHandle(); + long userSerialNumber = + UserManagerCompat.getInstance(mContext).getSerialNumberForUser(myUserHandle); + // persist things that have changed since the last backup ContentResolver cr = mContext.getContentResolver(); Cursor cursor = cr.query(Favorites.CONTENT_URI, FAVORITE_PROJECTION, @@ -306,16 +313,22 @@ public class LauncherBackupHelper implements BackupHelper { cursor.moveToPosition(-1); while(cursor.moveToNext()) { final long id = cursor.getLong(ID_INDEX); - final long updateTime = cursor.getLong(ID_MODIFIED); - Key key = getKey(Key.FAVORITE, id); - keys.add(key); - final String backupKey = keyToBackupKey(key); - currentIds.add(backupKey); - if (!savedIds.contains(backupKey) || updateTime >= in.t) { - byte[] blob = packFavorite(cursor); - writeRowToBackup(key, blob, out, data); + final long profileId = cursor.getLong(PROFILE_ID_INDEX); + if (userSerialNumber == profileId) { + final long updateTime = cursor.getLong(ID_MODIFIED); + Key key = getKey(Key.FAVORITE, id); + keys.add(key); + final String backupKey = keyToBackupKey(key); + currentIds.add(backupKey); + if (!savedIds.contains(backupKey) || updateTime >= in.t) { + byte[] blob = packFavorite(cursor); + writeRowToBackup(key, blob, out, data); + } else { + if (VERBOSE) Log.v(TAG, "favorite " + id + " was too old: " + updateTime); + } } else { - if (VERBOSE) Log.v(TAG, "favorite " + id + " was too old: " + updateTime); + if (VERBOSE) Log.v(TAG, "favorite " + id + " is for other profile: " + + profileId); } } } finally { @@ -468,7 +481,7 @@ public class LauncherBackupHelper implements BackupHelper { int startRows = out.rows; if (DEBUG) Log.d(TAG, "starting here: " + startRows); String where = "(" + Favorites.ITEM_TYPE + "=" + Favorites.ITEM_TYPE_APPLICATION + " OR " + - Favorites.ITEM_TYPE + "=" + Favorites.ITEM_TYPE_SHORTCUT + ") AND" + + Favorites.ITEM_TYPE + "=" + Favorites.ITEM_TYPE_SHORTCUT + ") AND " + Favorites.PROFILE_ID + "=" + userSerialNumber; Cursor cursor = cr.query(Favorites.CONTENT_URI, FAVORITE_PROJECTION, where, null, null); -- cgit v1.2.3