summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2017-02-02 13:58:33 -0800
committerTony Wickham <twickham@google.com>2017-02-02 15:37:18 -0800
commit18a1b5da360fcd9b371bea2a9cbd06085c698d8c (patch)
tree2cf175b4d45bcd00d9741bd7fcc64721e37149f4 /src/com/android/launcher3
parent1fafd719cb4c960448010e5fbdd8cc2634bd347d (diff)
downloadandroid_packages_apps_Trebuchet-18a1b5da360fcd9b371bea2a9cbd06085c698d8c.tar.gz
android_packages_apps_Trebuchet-18a1b5da360fcd9b371bea2a9cbd06085c698d8c.tar.bz2
android_packages_apps_Trebuchet-18a1b5da360fcd9b371bea2a9cbd06085c698d8c.zip
Gracefully ignore items that don't support notifications
PackageUserKey is only meant to be used for items that support notifications, so when trying to update it for an item that doesn't, we don't use it to check if the item has notifications. This fixes a crash that happens when trying to update notifications for a legacy shortcut, as such a shortcut doesn't have a component on its intent, which we were trying to use to populate PackageUserKey. Bug: 34842278 Change-Id: I8c69ccebbf9d93505d5b29ecd25d76c65610ddc4
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r--src/com/android/launcher3/Workspace.java4
-rw-r--r--src/com/android/launcher3/allapps/AllAppsContainerView.java3
-rw-r--r--src/com/android/launcher3/util/PackageUserKey.java14
3 files changed, 14 insertions, 7 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index d2008a6a6..981941892 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -3987,8 +3987,8 @@ public class Workspace extends PagedView
mapOverItems(MAP_RECURSE, new ItemOperator() {
@Override
public boolean evaluate(ItemInfo info, View v) {
- if (info instanceof ShortcutInfo && v instanceof BubbleTextView) {
- packageUserKey.updateFromItemInfo(info);
+ if (info instanceof ShortcutInfo && v instanceof BubbleTextView
+ && packageUserKey.updateFromItemInfo(info)) {
if (updatedBadges.contains(packageUserKey)) {
((BubbleTextView) v).applyBadgeState(info);
}
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index ec1fa34d0..54d0bbe50 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -478,8 +478,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
public void updateIconBadges(Set<PackageUserKey> updatedBadges) {
final PackageUserKey packageUserKey = new PackageUserKey(null, null);
for (AlphabeticalAppsList.AdapterItem app : mApps.getAdapterItems()) {
- if (app.appInfo != null) {
- packageUserKey.updateFromItemInfo(app.appInfo);
+ if (app.appInfo != null && packageUserKey.updateFromItemInfo(app.appInfo)) {
if (updatedBadges.contains(packageUserKey)) {
mAdapter.notifyItemChanged(app.position);
}
diff --git a/src/com/android/launcher3/util/PackageUserKey.java b/src/com/android/launcher3/util/PackageUserKey.java
index d08b0e931..3fb240117 100644
--- a/src/com/android/launcher3/util/PackageUserKey.java
+++ b/src/com/android/launcher3/util/PackageUserKey.java
@@ -4,6 +4,7 @@ import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
import com.android.launcher3.ItemInfo;
+import com.android.launcher3.shortcuts.DeepShortcutManager;
import java.util.Arrays;
@@ -32,9 +33,16 @@ public class PackageUserKey {
mHashCode = Arrays.hashCode(new Object[] {packageName, user});
}
- /** This should only be called to avoid new object creations in a loop. */
- public void updateFromItemInfo(ItemInfo info) {
- update(info.getTargetComponent().getPackageName(), info.user);
+ /**
+ * This should only be called to avoid new object creations in a loop.
+ * @return Whether this PackageUserKey was successfully updated - it shouldn't be used if not.
+ */
+ public boolean updateFromItemInfo(ItemInfo info) {
+ if (DeepShortcutManager.supportsShortcuts(info)) {
+ update(info.getTargetComponent().getPackageName(), info.user);
+ return true;
+ }
+ return false;
}
@Override