diff options
author | Winson Chung <winsonc@google.com> | 2012-02-29 10:56:19 -0800 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2012-02-29 10:56:54 -0800 |
commit | c3a747ac245d6175a6838230d8b01c618555e062 (patch) | |
tree | 6b54501a56db71c263ec6f4bb91f22237302217e /src | |
parent | 483e01b0ae587c891d7ead0bea5a860833f5a1fd (diff) | |
download | android_packages_apps_Trebuchet-c3a747ac245d6175a6838230d8b01c618555e062.tar.gz android_packages_apps_Trebuchet-c3a747ac245d6175a6838230d8b01c618555e062.tar.bz2 android_packages_apps_Trebuchet-c3a747ac245d6175a6838230d8b01c618555e062.zip |
Fixing NPE when null intent passed to InstallShortcutReceiver. (Bug: 6089830)
Change-Id: Ideeb26abd29039f9b8d2dde0a752986249148a8c
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/InstallShortcutReceiver.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/com/android/launcher2/InstallShortcutReceiver.java b/src/com/android/launcher2/InstallShortcutReceiver.java index 9e2067d34..e04ce6419 100644 --- a/src/com/android/launcher2/InstallShortcutReceiver.java +++ b/src/com/android/launcher2/InstallShortcutReceiver.java @@ -17,8 +17,11 @@ package com.android.launcher2; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; import android.widget.Toast; import com.android.launcher.R; @@ -41,12 +44,25 @@ public class InstallShortcutReceiver extends BroadcastReceiver { } final int screen = Launcher.getScreen(); - final String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME); final Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT); + if (intent == null) { + return; + } + // This name is only used for comparisons and notifications, so fall back to activity name + // if not supplied + String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME); + if (name == null) { + try { + PackageManager pm = context.getPackageManager(); + ActivityInfo info = pm.getActivityInfo(intent.getComponent(), 0); + name = info.loadLabel(pm).toString(); + } catch (PackageManager.NameNotFoundException nnfe) { + return; + } + } final ArrayList<ItemInfo> items = LauncherModel.getItemsInLocalCoordinates(context); final boolean shortcutExists = LauncherModel.shortcutExists(context, name, intent); - final String[] errorMsgs = {""}; if (!installShortcut(context, data, items, name, intent, screen, shortcutExists, |