diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 4b936c18251bd..175c11dc3f44d 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -32,7 +32,6 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringRes; import android.annotation.UserIdInt; -import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManagerInternal; import android.app.ActivityManagerNative; @@ -45,6 +44,7 @@ import android.app.admin.DevicePolicyEventLogger; import android.app.admin.DevicePolicyManagerInternal; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.IIntentReceiver; import android.content.Intent; import android.content.IntentFilter; import android.content.IntentSender; @@ -128,11 +128,8 @@ import com.android.server.LocalServices; import com.android.server.LockGuard; import com.android.server.SystemService; import com.android.server.am.UserState; -import com.android.server.pm.UserManagerInternal.UserAssignmentResult; import com.android.server.pm.UserManagerInternal.UserLifecycleListener; import com.android.server.pm.UserManagerInternal.UserRestrictionsListener; -import com.android.server.pm.UserManagerInternal.UserStartMode; -import com.android.server.pm.UserManagerInternal.UserVisibilityListener; import com.android.server.storage.DeviceStorageMonitorInternal; import com.android.server.utils.Slogf; import com.android.server.utils.TimingsTraceAndSlog; @@ -5625,29 +5622,24 @@ public class UserManagerService extends IUserManager.Stub { // Also, add the UserHandle for mainline modules which can't use the @hide // EXTRA_USER_HANDLE. removedIntent.putExtra(Intent.EXTRA_USER, UserHandle.of(userId)); - mContext.sendOrderedBroadcastAsUser(removedIntent, UserHandle.ALL, - android.Manifest.permission.MANAGE_USERS, - - new BroadcastReceiver() { + getActivityManagerInternal().broadcastIntentWithCallback(removedIntent, + new IIntentReceiver.Stub() { @Override - public void onReceive(Context context, Intent intent) { + public void performReceive(Intent intent, int resultCode, String data, + Bundle extras, boolean ordered, boolean sticky, int sendingUser) { if (DBG) { Slog.i(LOG_TAG, "USER_REMOVED broadcast sent, cleaning up user data " - + userId); + + userId); } - new Thread() { - @Override - public void run() { - LocalServices.getService(ActivityManagerInternal.class) - .onUserRemoved(userId); - removeUserState(userId); - } - }.start(); + new Thread(() -> { + getActivityManagerInternal().onUserRemoved(userId); + removeUserState(userId); + }).start(); } }, - - null, Activity.RESULT_OK, null, null); + new String[] {android.Manifest.permission.MANAGE_USERS}, + UserHandle.USER_ALL, null, null, null); } finally { Binder.restoreCallingIdentity(ident); }