diff options
Diffstat (limited to 'src/com/android/launcher3/InstallShortcutReceiver.java')
-rw-r--r-- | src/com/android/launcher3/InstallShortcutReceiver.java | 27 |
1 files changed, 19 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 |