am 1317e2dd: Fix bug with user of shortcut not being remembered over restart.
* commit '1317e2dd4a2fb097d1e54759536d515fdeca2c3e':
Fix bug with user of shortcut not being remembered over restart.
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index bf2a02d..01b1cde 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2638,23 +2638,26 @@
!intent.hasExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION);
LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(this);
UserManagerCompat userManager = UserManagerCompat.getInstance(this);
- long serialNumber = intent.getLongExtra(AppInfo.EXTRA_PROFILE, 0);
- UserHandleCompat user = serialNumber == 0 ? null :
- userManager.getUserForSerialNumber(serialNumber);
+ UserHandleCompat user = null;
+ if (intent.hasExtra(AppInfo.EXTRA_PROFILE)) {
+ long serialNumber = intent.getLongExtra(AppInfo.EXTRA_PROFILE, -1);
+ user = userManager.getUserForSerialNumber(serialNumber);
+ }
+
+ Bundle optsBundle = null;
if (useLaunchAnimation) {
ActivityOptions opts = ActivityOptions.makeScaleUpAnimation(v, 0, 0,
v.getMeasuredWidth(), v.getMeasuredHeight());
- if (user == null || user.equals(UserHandleCompat.myUserHandle())) {
- // Could be launching some bookkeeping activity
- startActivity(intent, opts.toBundle());
- } else {
- launcherApps.startActivityForProfile(intent.getComponent(),
- intent.getSourceBounds(),
- opts.toBundle(), user);
- }
+ optsBundle = opts.toBundle();
+ }
+
+ if (user == null || user.equals(UserHandleCompat.myUserHandle())) {
+ // Could be launching some bookkeeping activity
+ startActivity(intent, optsBundle);
} else {
- startActivity(intent);
+ launcherApps.startActivityForProfile(intent.getComponent(),
+ intent.getSourceBounds(), optsBundle, user);
}
return true;
} catch (SecurityException e) {
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index 0725a65..79bc084 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -114,7 +114,7 @@
resolver.registerContentObserver(LauncherSettings.Favorites.CONTENT_URI, true,
mFavoritesObserver);
}
-
+
public void recreateWidgetPreviewDb() {
if (mWidgetPreviewCacheDb != null) {
mWidgetPreviewCacheDb.close();
@@ -127,6 +127,8 @@
*/
public void onTerminate() {
sContext.unregisterReceiver(mModel);
+ final LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(sContext);
+ launcherApps.removeOnAppsChangedListener(mModel);
ContentResolver resolver = sContext.getContentResolver();
resolver.unregisterContentObserver(mFavoritesObserver);
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index f0ffe1d..8af0970 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -902,7 +902,7 @@
item.container = c.getInt(containerIndex);
item.itemType = c.getInt(itemTypeIndex);
item.screenId = c.getInt(screenIndex);
- int serialNumber = c.getInt(profileIdIndex);
+ long serialNumber = c.getInt(profileIdIndex);
item.user = userManager.getUserForSerialNumber(serialNumber);
// Skip if user has been deleted.
if (item.user != null) {
@@ -1894,7 +1894,7 @@
case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
id = c.getLong(idIndex);
intentDescription = c.getString(intentIndex);
- int serialNumber = c.getInt(profileIdIndex);
+ long serialNumber = c.getInt(profileIdIndex);
user = mUserManager.getUserForSerialNumber(serialNumber);
if (user == null) {
// User has been deleted remove the item.