summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/InstallShortcutReceiver.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/InstallShortcutReceiver.java')
-rw-r--r--src/com/android/launcher3/InstallShortcutReceiver.java27
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