diff --git a/service/java/com/android/server/wifi/WrongPasswordNotifier.java b/service/java/com/android/server/wifi/WrongPasswordNotifier.java
index a5c039b..ce59684 100644
--- a/service/java/com/android/server/wifi/WrongPasswordNotifier.java
+++ b/service/java/com/android/server/wifi/WrongPasswordNotifier.java
@@ -18,12 +18,17 @@
 
 import android.app.Notification;
 import android.app.PendingIntent;
+import android.content.Context;
 import android.content.Intent;
 import android.graphics.drawable.Icon;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
+import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
+import com.android.modules.utils.build.SdkLevel;
 import com.android.server.wifi.util.NativeUtil;
 
 /**
@@ -83,6 +88,18 @@
         Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS)
                 .setPackage(settingsPackage)
                 .putExtra("wifi_start_connect_ssid", NativeUtil.removeEnclosingQuotes(ssid));
+        CharSequence title = mContext.getString(
+                com.android.wifi.resources.R.string.wifi_available_title_failed_to_connect);
+
+        Context userContext = mContext;
+        if (SdkLevel.isAtLeastS() && UserManager.isHeadlessSystemUserMode()) {
+            // Need to pass the context of the current user to the activity that's launched when
+            // the notification is tapped
+            userContext = mContext.createContextAsUser(UserHandle.CURRENT, /* flags= */ 0);
+        }
+
+        Log.i(TAG, "Showing '" + title + "' notification for user " + userContext.getUser()
+                + " and package " + settingsPackage);
         Notification.Builder builder = mFrameworkFacade.makeNotificationBuilder(mContext,
                 WifiService.NOTIFICATION_NETWORK_ALERTS)
                 .setAutoCancel(true)
@@ -90,11 +107,10 @@
                 // TODO(zqiu): consider creating a new icon.
                 .setSmallIcon(Icon.createWithResource(mContext.getWifiOverlayApkPkgName(),
                         com.android.wifi.resources.R.drawable.stat_notify_wifi_in_range))
-                .setContentTitle(mContext.getString(
-                        com.android.wifi.resources.R.string.wifi_available_title_failed_to_connect))
+                .setContentTitle(title)
                 .setContentText(ssid)
                 .setContentIntent(mFrameworkFacade.getActivity(
-                        mContext, 0, intent,
+                        userContext, 0, intent,
                         PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE))
                 .setColor(mContext.getResources().getColor(
                         android.R.color.system_notification_accent_color));
