diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 87be63e..fabd9e4 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -293,20 +293,22 @@
                 }
             });
         } else if (v instanceof PagedViewWidget) {
-            final ResolveInfo info = (ResolveInfo) v.getTag();
-            if (mWallpapers.contains(info)) {
-                // Start the wallpaper picker
-                animateClickFeedback(v, new Runnable() {
-                    @Override
-                    public void run() {
-                        // add the shortcut
-                        Intent createWallpapersIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
-                        ComponentName name = new ComponentName(info.activityInfo.packageName,
-                                info.activityInfo.name);
-                        createWallpapersIntent.setComponent(name);
-                        mLauncher.processWallpaper(createWallpapersIntent);
-                    }
-                });
+            if (v.getTag() instanceof ResolveInfo) {
+                final ResolveInfo info = (ResolveInfo) v.getTag();
+                if (mWallpapers.contains(info)) {
+                    // Start the wallpaper picker
+                    animateClickFeedback(v, new Runnable() {
+                        @Override
+                        public void run() {
+                            // add the shortcut
+                            Intent createWallpapersIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
+                            ComponentName name = new ComponentName(info.activityInfo.packageName,
+                                    info.activityInfo.name);
+                            createWallpapersIntent.setComponent(name);
+                            mLauncher.processWallpaper(createWallpapersIntent);
+                        }
+                    });
+                }
             } else {
                 // Add the widget to the current workspace screen
                 Workspace w = mLauncher.getWorkspace();
