diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
index e28ef0f..4f18f35 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
@@ -216,7 +216,7 @@
         updateRemoteAugmentedAutofillService();
 
         final ComponentName componentName = RemoteInlineSuggestionRenderService
-                .getServiceComponentName(getContext());
+                .getServiceComponentName(getContext(), mUserId);
         if (componentName != null) {
             mRemoteInlineSuggestionRenderService = new RemoteInlineSuggestionRenderService(
                     getContext(), componentName, InlineSuggestionRenderService.SERVICE_INTERFACE,
diff --git a/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java b/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java
index f9e08e6..31dc23f 100644
--- a/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java
+++ b/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java
@@ -20,6 +20,7 @@
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UserIdInt;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -86,7 +87,7 @@
     }
 
     @Nullable
-    private static ServiceInfo getServiceInfo(Context context) {
+    private static ServiceInfo getServiceInfo(Context context, int userId) {
         final String packageName =
                 context.getPackageManager().getServicesSystemSharedLibraryPackageName();
         if (packageName == null) {
@@ -96,8 +97,8 @@
 
         final Intent intent = new Intent(InlineSuggestionRenderService.SERVICE_INTERFACE);
         intent.setPackage(packageName);
-        final ResolveInfo resolveInfo = context.getPackageManager().resolveService(intent,
-                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA);
+        final ResolveInfo resolveInfo = context.getPackageManager().resolveServiceAsUser(intent,
+                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA, userId);
         final ServiceInfo serviceInfo = resolveInfo == null ? null : resolveInfo.serviceInfo;
         if (resolveInfo == null || serviceInfo == null) {
             Slog.w(TAG, "No valid components found.");
@@ -115,8 +116,8 @@
     }
 
     @Nullable
-    public static ComponentName getServiceComponentName(Context context) {
-        final ServiceInfo serviceInfo = getServiceInfo(context);
+    public static ComponentName getServiceComponentName(Context context, @UserIdInt int userId) {
+        final ServiceInfo serviceInfo = getServiceInfo(context, userId);
         if (serviceInfo == null) return null;
 
         final ComponentName componentName = new ComponentName(serviceInfo.packageName,
