Prevent work folder creation when launcher is upgraded.

Change-Id: If7a91e0852dae1bf5dcf21e89c1771b5f37629f3
This commit is contained in:
Sunny Goyal
2015-05-12 10:39:59 -07:00
parent 44d0aacd5f
commit e2fba6cba1
2 changed files with 34 additions and 2 deletions

View File

@@ -52,6 +52,7 @@ import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.compat.UserHandleCompat;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.config.ProviderConfig;
import com.android.launcher3.util.ManagedProfileHeuristic;
import com.android.launcher3.util.Thunk;
import java.io.File;
@@ -64,7 +65,7 @@ public class LauncherProvider extends ContentProvider {
private static final String TAG = "Launcher.LauncherProvider";
private static final boolean LOGD = false;
private static final int DATABASE_VERSION = 24;
private static final int DATABASE_VERSION = 25;
static final String OLD_AUTHORITY = "com.android.launcher2.settings";
static final String AUTHORITY = ProviderConfig.AUTHORITY;
@@ -475,6 +476,9 @@ public class LauncherProvider extends ContentProvider {
// Fresh and clean launcher DB.
mMaxItemId = initializeMaxItemId(db);
setFlagEmptyDbCreated();
// When a new DB is created, remove all previously stored managed profile information.
ManagedProfileHeuristic.processAllUsers(Collections.EMPTY_LIST, mContext);
}
private void addWorkspacesTable(SQLiteDatabase db) {
@@ -620,7 +624,9 @@ public class LauncherProvider extends ContentProvider {
}
case 23:
convertShortcutsToLauncherActivities(db);
case 24: {
case 24:
ManagedProfileHeuristic.markExistingUsersForNoFolderCreation(mContext);
case 25: {
// DB Upgraded successfully
return;
}

View File

@@ -274,4 +274,30 @@ public class ManagedProfileHeuristic {
keysOut.add(INSTALLED_PACKAGES_PREFIX + userSerial);
keysOut.add(USER_FOLDER_ID_PREFIX + userSerial);
}
/**
* For each user, if a work folder has not been created, mark it such that the folder will
* never get created.
*/
public static void markExistingUsersForNoFolderCreation(Context context) {
UserManagerCompat userManager = UserManagerCompat.getInstance(context);
UserHandleCompat myUser = UserHandleCompat.myUserHandle();
SharedPreferences prefs = null;
for (UserHandleCompat user : userManager.getUserProfiles()) {
if (myUser.equals(user)) {
continue;
}
if (prefs == null) {
prefs = context.getSharedPreferences(
LauncherFiles.MANAGED_USER_PREFERENCES_KEY,
Context.MODE_PRIVATE);
}
String folderIdKey = USER_FOLDER_ID_PREFIX + userManager.getSerialNumberForUser(user);
if (!prefs.contains(folderIdKey)) {
prefs.edit().putLong(folderIdKey, ItemInfo.NO_ID).apply();
}
}
}
}