diff --git a/src/com/android/settings/CreateShortcut.java b/src/com/android/settings/CreateShortcut.java
index 0312a4b..f71df1d 100644
--- a/src/com/android/settings/CreateShortcut.java
+++ b/src/com/android/settings/CreateShortcut.java
@@ -18,10 +18,15 @@
 
 import android.app.LauncherActivity;
 import android.content.Intent;
+import android.content.pm.ResolveInfo;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.ListView;
 
+import com.android.settings.Settings.TetherSettingsActivity;
+
+import java.util.List;
+
 public class CreateShortcut extends LauncherActivity {
 
     @Override
@@ -49,4 +54,22 @@
     protected boolean onEvaluateShowIcons() {
         return false;
     }
+
+    /**
+     * Perform query on package manager for list items.  The default
+     * implementation queries for activities.
+     */
+    protected List<ResolveInfo> onQueryPackageManager(Intent queryIntent) {
+        List<ResolveInfo> activities = super.onQueryPackageManager(queryIntent);
+        if (activities == null) return null;
+        for (int i = activities.size() - 1; i >= 0; i--) {
+            ResolveInfo info = activities.get(i);
+            if (info.activityInfo.name.endsWith(TetherSettingsActivity.class.getSimpleName())) {
+                if (!TetherSettings.showInShortcuts(this)) {
+                    activities.remove(i);
+                }
+            }
+        }
+        return activities;
+    }
 }
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index d2c99dc..f0b6b44 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -38,6 +38,8 @@
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.SystemProperties;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.preference.CheckBoxPreference;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
@@ -590,4 +592,17 @@
     public int getHelpResource() {
         return R.string.help_url_tether;
     }
+
+    /**
+     * Checks whether this screen will have anything to show on this device. This is called by
+     * the shortcut picker for Settings shortcuts (home screen widget).
+     * @param context a context object for getting a system service.
+     * @return whether Tether & portable hotspot should be shown in the shortcuts picker.
+     */
+    public static boolean showInShortcuts(Context context) {
+        final ConnectivityManager cm =
+                (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        final boolean isSecondaryUser = UserHandle.myUserId() != UserHandle.USER_OWNER;
+        return !isSecondaryUser && cm.isTetheringSupported();
+    }
 }
