diff options
author | Adam Cohen <adamcohen@google.com> | 2014-05-20 17:03:04 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2014-05-20 17:04:13 -0700 |
commit | a28b78e8385f0f590b144038157afc7d34cd48b7 (patch) | |
tree | 83c6c404c88411815f5e6c1e482d27a75924e3d6 /src/com | |
parent | 7716b400654bae009188daf9053b68727410a53d (diff) | |
download | android_packages_apps_Trebuchet-a28b78e8385f0f590b144038157afc7d34cd48b7.tar.gz android_packages_apps_Trebuchet-a28b78e8385f0f590b144038157afc7d34cd48b7.tar.bz2 android_packages_apps_Trebuchet-a28b78e8385f0f590b144038157afc7d34cd48b7.zip |
Fix issue where shortcuts were still being added even if corresponding app is uninstalled
issue 14410162
Change-Id: I7857aace069c4eb4c1ee504088f4526d61e1f30e
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/launcher3/InstallShortcutReceiver.java | 27 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 9 |
2 files changed, 28 insertions, 8 deletions
diff --git a/src/com/android/launcher3/InstallShortcutReceiver.java b/src/com/android/launcher3/InstallShortcutReceiver.java index 28cef1346..2edde4fae 100644 --- a/src/com/android/launcher3/InstallShortcutReceiver.java +++ b/src/com/android/launcher3/InstallShortcutReceiver.java @@ -17,6 +17,7 @@ package com.android.launcher3; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -29,6 +30,8 @@ import android.util.Base64; import android.util.Log; import android.widget.Toast; +import com.android.launcher3.compat.UserHandleCompat; + import org.json.JSONObject; import org.json.JSONStringer; import org.json.JSONTokener; @@ -280,19 +283,27 @@ public class InstallShortcutReceiver extends BroadcastReceiver { final boolean exists = LauncherModel.shortcutExists(context, name, intent); //final boolean allowDuplicate = data.getBooleanExtra(Launcher.EXTRA_SHORTCUT_DUPLICATE, true); - // TODO-XXX: Disable duplicates for now - if (!exists /* && allowDuplicate */) { + // If the intent specifies a package, make sure the package exists + String packageName = intent.getPackage(); + if (packageName == null) { + packageName = intent.getComponent() == null ? null : + intent.getComponent().getPackageName(); + } + if (packageName != null && !packageName.isEmpty()) { + UserHandleCompat myUserHandle = UserHandleCompat.myUserHandle(); + if (!LauncherModel.isValidPackage(context, packageName, myUserHandle)) { + if (DBG) Log.d(TAG, "Ignoring shortcut for absent package:" + intent); + continue; + } + } + + if (!exists) { // Generate a shortcut info to add into the model ShortcutInfo info = getShortcutInfo(context, pendingInfo.data, pendingInfo.launchIntent); addShortcuts.add(info); } - /* - else if (exists && !allowDuplicate) { - result = INSTALL_SHORTCUT_IS_DUPLICATE; - duplicateName = name; - } - */ + } // Notify the user once if we weren't able to place any duplicates diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index cc87281fc..141368c20 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -2934,6 +2934,15 @@ public class LauncherModel extends BroadcastReceiver return launcherApps.isActivityEnabledForProfile(cn, user); } + public static boolean isValidPackage(Context context, String packageName, + UserHandleCompat user) { + if (packageName == null) { + return false; + } + final LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(context); + return launcherApps.isPackageEnabledForProfile(packageName, user); + } + /** * Make an ShortcutInfo object for a restored application or shortcut item that points * to a package that is not yet installed on the system. |