diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 8e58f48..a0b2b77 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -830,6 +830,20 @@
                 android:resource="@string/zen_mode_automation_suggestion_title" />
         </activity>
 
+        <activity android:name="Settings$WallpaperSuggestionActivity"
+                android:label="@string/wallpaper_settings_title"
+                android:exported="true"
+                android:taskAffinity="">
+            <intent-filter android:priority="1">
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.android.settings.suggested.category.SETTINGS_ONLY" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.WallpaperTypeSettings" />
+            <meta-data android:name="com.android.settings.title"
+                android:resource="@string/wallpaper_suggestion_title" />
+        </activity>
+
         <activity android:name="Settings$ZenModeScheduleRuleSettingsActivity"
                 android:exported="true"
                 android:taskAffinity="">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b510872..086797b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2064,6 +2064,8 @@
     <string name="screen_timeout_summary">After <xliff:g id="timeout_description">%1$s</xliff:g> of inactivity</string>
     <!-- Wallpaper settings title [CHAR LIMIT=30] -->
     <string name="wallpaper_settings_title">Wallpaper</string>
+    <!-- Wallpaper suggestion title [CHAR LIMIT=30] -->
+    <string name="wallpaper_suggestion_title">Set up wallpaper</string>
     <!-- Wallpaper settings fragment title [CHAR LIMIT=30] -->
     <string name="wallpaper_settings_fragment_title">Choose wallpaper from</string>
     <!-- Display settings screen, trigger for screen saver options -->
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 99e6968..4141274 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -125,6 +125,8 @@
     public static class AppWriteSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ManageDefaultAppsActivity extends SettingsActivity { /* empty */ }
 
+    public static class WallpaperSuggestionActivity extends SettingsActivity { /* empty */ }
+
     // Categories.
     public static class WirelessSettings extends SettingsActivity { /* empty */ }
     public static class DeviceSettings extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index a375cb1..3288860 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -314,6 +314,7 @@
             DrawOverlayDetails.class.getName(),
             WriteSettingsDetails.class.getName(),
             ManageDefaultApps.class.getName(),
+            WallpaperTypeSettings.class.getName(),
     };
 
 
diff --git a/src/com/android/settings/dashboard/SuggestionsChecks.java b/src/com/android/settings/dashboard/SuggestionsChecks.java
index b8a03c4..b483ac7 100644
--- a/src/com/android/settings/dashboard/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/SuggestionsChecks.java
@@ -15,8 +15,16 @@
 package com.android.settings.dashboard;
 
 import android.app.AutomaticZenRule;
+import android.app.IWallpaperManager;
+import android.app.IWallpaperManager.Stub;
+import android.app.IWallpaperManagerCallback;
 import android.app.NotificationManager;
 import android.content.Context;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import com.android.settings.Settings.WallpaperSuggestionActivity;
 import com.android.settings.Settings.ZenModeAutomationSuggestionActivity;
 import com.android.settingslib.drawer.Tile;
 
@@ -34,9 +42,11 @@
     }
 
     public boolean isSuggestionComplete(Tile suggestion) {
-        if (suggestion.intent.getComponent().getClassName().equals(
-                ZenModeAutomationSuggestionActivity.class.getName())) {
+        String className = suggestion.intent.getComponent().getClassName();
+        if (className.equals(ZenModeAutomationSuggestionActivity.class.getName())) {
             return hasEnabledZenAutoRules();
+        } else if (className.equals(WallpaperSuggestionActivity.class.getName())) {
+            return hasWallpaperSet();
         }
         return false;
     }
@@ -52,4 +62,20 @@
         return false;
     }
 
+    private boolean hasWallpaperSet() {
+        IBinder b = ServiceManager.getService(Context.WALLPAPER_SERVICE);
+        IWallpaperManager service = Stub.asInterface(b);
+        try {
+            return service.getWallpaper(mCallback, new Bundle()) != null;
+        } catch (RemoteException e) {
+        }
+        return false;
+    }
+
+    private final IWallpaperManagerCallback mCallback = new IWallpaperManagerCallback.Stub() {
+        @Override
+        public void onWallpaperChanged() throws RemoteException {
+             // Don't care.
+        }
+    };
 }
