Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41584750 authored by Adam Bookatz's avatar Adam Bookatz Committed by Android (Google) Code Review
Browse files

Merge "SpecialUserHandle annotation for Context and AM" into main

parents fe9528bc 876aef9b
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.annotation.MainThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SpecialUsers.CanBeCURRENT;
import android.annotation.StyleRes;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
@@ -6096,7 +6097,7 @@ public class Activity extends ContextThemeWrapper
    @SystemApi
    @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL})
    public void startActivityForResultAsUser(@NonNull Intent intent, int requestCode,
            @NonNull UserHandle user) {
            @NonNull @CanBeCURRENT UserHandle user) {
        startActivityForResultAsUser(intent, requestCode, null, user);
    }

@@ -6135,7 +6136,7 @@ public class Activity extends ContextThemeWrapper
    @SystemApi
    @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL})
    public void startActivityForResultAsUser(@NonNull Intent intent, int requestCode,
            @Nullable Bundle options, @NonNull UserHandle user) {
            @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) {
        startActivityForResultAsUser(intent, mEmbeddedID, requestCode, options, user);
    }

@@ -6175,7 +6176,7 @@ public class Activity extends ContextThemeWrapper
    @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL})
    public void startActivityForResultAsUser(@NonNull Intent intent, @NonNull String resultWho,
            int requestCode,
            @Nullable Bundle options, @NonNull UserHandle user) {
            @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) {
        if (mParent != null) {
            throw new RuntimeException("Can't be called from a child");
        }
@@ -6205,7 +6206,7 @@ public class Activity extends ContextThemeWrapper
     * @hide Implement to provide correct calling token.
     */
    @Override
    public void startActivityAsUser(Intent intent, UserHandle user) {
    public void startActivityAsUser(Intent intent, @CanBeCURRENT UserHandle user) {
        startActivityAsUser(intent, null, user);
    }

@@ -6225,7 +6226,7 @@ public class Activity extends ContextThemeWrapper
     */
    @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL})
    public void startActivityAsUser(@NonNull Intent intent,
            @Nullable Bundle options, @NonNull UserHandle user) {
            @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) {
        if (mParent != null) {
            throw new RuntimeException("Can't be called from a child");
        }
@@ -6818,7 +6819,7 @@ public class Activity extends ContextThemeWrapper

    private void startActivityAsUserFromFragment(@NonNull Fragment fragment,
            @RequiresPermission Intent intent, int requestCode, @Nullable Bundle options,
            UserHandle user) {
            @CanBeCURRENT UserHandle user) {
        startActivityForResultAsUser(intent, fragment.mWho, requestCode, options, user);
    }

+22 −12
Original line number Diff line number Diff line
@@ -31,6 +31,9 @@ import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.SpecialUsers.CanBeCURRENT;
import android.annotation.SpecialUsers.CannotBeSpecialUser;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
@@ -2345,7 +2348,8 @@ public class ActivityManager {

        /** @hide */
        @UnsupportedAppUsage
        public static Bitmap loadTaskDescriptionIcon(String iconFilename, int userId) {
        public static Bitmap loadTaskDescriptionIcon(String iconFilename,
                @CanBeCURRENT @UserIdInt int userId) {
            if (iconFilename != null) {
                try {
                    return getTaskService().getTaskDescriptionIcon(iconFilename,
@@ -4262,7 +4266,8 @@ public class ActivityManager {
     * @return Returns true if successful.
     * @hide
     */
    public boolean setProcessMemoryTrimLevel(String process, int userId, int level) {
    public boolean setProcessMemoryTrimLevel(
            String process, @CanBeALL @CanBeCURRENT @UserIdInt int userId, int level) {
        try {
            return getService().setProcessMemoryTrimLevel(process, userId,
                    level);
@@ -4950,7 +4955,8 @@ public class ActivityManager {
     * services, removing their alarms, etc.
     */
    @UnsupportedAppUsage
    public void forceStopPackageAsUser(String packageName, int userId) {
    public void forceStopPackageAsUser(String packageName,
            @CanBeALL @CanBeCURRENT @UserIdInt int userId) {
        try {
            getService().forceStopPackage(packageName, userId);
        } catch (RemoteException e) {
@@ -4975,7 +4981,8 @@ public class ActivityManager {
     * @hide
     */
    @RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES)
    public void forceStopPackageAsUserEvenWhenStopping(String packageName, @UserIdInt int userId) {
    public void forceStopPackageAsUserEvenWhenStopping(String packageName,
            @CanBeALL @CanBeCURRENT @UserIdInt int userId) {
        try {
            getService().forceStopPackageEvenWhenStopping(packageName, userId);
        } catch (RemoteException e) {
@@ -5460,7 +5467,7 @@ public class ActivityManager {
     */
    @Nullable
    @RequiresPermission(Manifest.permission.MANAGE_USERS)
    public String getSwitchingFromUserMessage(@UserIdInt int userId) {
    public String getSwitchingFromUserMessage(@CannotBeSpecialUser @UserIdInt int userId) {
        try {
            return getService().getSwitchingFromUserMessage(userId);
        } catch (RemoteException re) {
@@ -5475,7 +5482,7 @@ public class ActivityManager {
     */
    @Nullable
    @RequiresPermission(Manifest.permission.MANAGE_USERS)
    public String getSwitchingToUserMessage(@UserIdInt int userId) {
    public String getSwitchingToUserMessage(@CannotBeSpecialUser @UserIdInt int userId) {
        try {
            return getService().getSwitchingToUserMessage(userId);
        } catch (RemoteException re) {
@@ -5729,7 +5736,8 @@ public class ActivityManager {
    /**
     * @hide
     */
    public static void broadcastStickyIntent(Intent intent, int userId) {
    public static void broadcastStickyIntent(Intent intent,
            @CanBeALL @CanBeCURRENT @UserIdInt int userId) {
        broadcastStickyIntent(intent, AppOpsManager.OP_NONE, null, userId);
    }

@@ -5738,7 +5746,8 @@ public class ActivityManager {
     *
     * @hide
     */
    public static void broadcastStickyIntent(Intent intent, int appOp, int userId) {
    public static void broadcastStickyIntent(Intent intent, int appOp,
            @CanBeALL @CanBeCURRENT @UserIdInt  int userId) {
        broadcastStickyIntent(intent, appOp, null, userId);
    }

@@ -5747,7 +5756,8 @@ public class ActivityManager {
     *
     * @hide
     */
    public static void broadcastStickyIntent(Intent intent, int appOp, Bundle options, int userId) {
    public static void broadcastStickyIntent(Intent intent, int appOp, Bundle options,
            @CanBeALL @CanBeCURRENT @UserIdInt  int userId) {
        broadcastStickyIntent(intent, null, appOp, options, userId);
    }

@@ -5757,7 +5767,7 @@ public class ActivityManager {
     * @hide
     */
    public static void broadcastStickyIntent(Intent intent, String[] excludedPackages,
            int appOp, Bundle options, int userId) {
            int appOp, Bundle options, @CanBeALL @CanBeCURRENT @UserIdInt  int userId) {
        try {
            getService().broadcastIntentWithFeature(
                    null, null, intent, null, null, Activity.RESULT_OK, null, null,
@@ -6018,7 +6028,7 @@ public class ActivityManager {
            android.Manifest.permission.MANAGE_USERS,
            android.Manifest.permission.CREATE_USERS
    })
    public boolean isProfileForeground(@NonNull UserHandle userHandle) {
    public boolean isProfileForeground(@NonNull @CannotBeSpecialUser UserHandle userHandle) {
        UserManager userManager = mContext.getSystemService(UserManager.class);
        if (userManager != null) {
            for (UserInfo userInfo : userManager.getProfiles(getCurrentUser())) {
@@ -6316,7 +6326,7 @@ public class ActivityManager {
     * @hide
     */
    @RequiresPermission(Manifest.permission.SET_THEME_OVERLAY_CONTROLLER_READY)
    public void setThemeOverlayReady(@UserIdInt int userId) {
    public void setThemeOverlayReady(@CannotBeSpecialUser @UserIdInt int userId) {
        try {
            getService().setThemeOverlayReady(userId);
        } catch (RemoteException e) {
+3 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.annotation.Nullable;
import android.annotation.PermissionMethod;
import android.annotation.PermissionName;
import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.SpecialUsers.CanBeCURRENT;
import android.annotation.UserIdInt;
import android.app.ActivityManager.ProcessCapability;
import android.app.ActivityManager.RestrictionLevel;
@@ -869,7 +870,7 @@ public abstract class ActivityManagerInternal {
    public abstract int broadcastIntent(Intent intent,
            IIntentReceiver resultTo,
            String[] requiredPermissions, boolean serialized,
            int userId, int[] appIdAllowList,
            @CanBeALL @CanBeCURRENT @UserIdInt int userId, int[] appIdAllowList,
            @Nullable BiFunction<Integer, Bundle, Bundle> filterExtrasForReceiver,
            @Nullable Bundle bOptions);

@@ -882,7 +883,7 @@ public abstract class ActivityManagerInternal {
    public abstract int broadcastIntentWithCallback(Intent intent,
            IIntentReceiver resultTo,
            String[] requiredPermissions,
            int userId, int[] appIdAllowList,
            @CanBeALL @CanBeCURRENT @UserIdInt int userId, int[] appIdAllowList,
            @Nullable BiFunction<Integer, Bundle, Bundle> filterExtrasForReceiver,
            @Nullable Bundle bOptions);

+2 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SpecialUsers.CanBeCURRENT;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
@@ -2206,7 +2207,7 @@ public class Instrumentation {
    @UnsupportedAppUsage
    public ActivityResult execStartActivity(
            Context who, IBinder contextThread, IBinder token, String resultWho,
            Intent intent, int requestCode, Bundle options, UserHandle user) {
            Intent intent, int requestCode, Bundle options, @CanBeCURRENT UserHandle user) {
        if (DEBUG_START_ACTIVITY) {
            Log.d(TAG, "startActivity: who=" + who + " user=" + user + " intent=" + intent
                    + " requestCode=" + requestCode + " resultWho=" + resultWho
+43 −34
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ import android.annotation.PermissionMethod;
import android.annotation.PermissionName;
import android.annotation.RequiresFeature;
import android.annotation.RequiresPermission;
import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.SpecialUsers.CanBeCURRENT;
import android.annotation.StringDef;
import android.annotation.StringRes;
import android.annotation.StyleRes;
@@ -2223,7 +2225,7 @@ public abstract class Context {
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    @SystemApi
    public void startActivityAsUser(@RequiresPermission @NonNull Intent intent,
            @NonNull UserHandle user) {
            @NonNull @CanBeCURRENT UserHandle user) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

@@ -2271,7 +2273,7 @@ public abstract class Context {
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    @SystemApi
    public void startActivityAsUser(@RequiresPermission @NonNull Intent intent,
            @Nullable Bundle options, @NonNull UserHandle userId) {
            @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle userId) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

@@ -2375,7 +2377,8 @@ public abstract class Context {
     * @see PackageManager#resolveActivity
     */
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public int startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) {
    public int startActivitiesAsUser(Intent[] intents, Bundle options,
            @CanBeCURRENT UserHandle userHandle) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

@@ -2636,8 +2639,8 @@ public abstract class Context {
     * @hide
     */
    @SuppressWarnings("HiddenAbstractMethod")
    public abstract void sendBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user,
            String[] receiverPermissions);
    public abstract void sendBroadcastAsUserMultiplePermissions(Intent intent,
            @CanBeALL @CanBeCURRENT UserHandle user, String[] receiverPermissions);

    /**
     * Broadcast the given intent to all interested BroadcastReceivers, allowing
@@ -2847,7 +2850,7 @@ public abstract class Context {
     */
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user);
            @CanBeALL @CanBeCURRENT UserHandle user);

    /**
     * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the
@@ -2865,7 +2868,7 @@ public abstract class Context {
     */
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user, @Nullable String receiverPermission);
            @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission);

    /**
     * Version of {@link #sendBroadcast(Intent, String, Bundle)} that allows you to specify the
@@ -2888,7 +2891,8 @@ public abstract class Context {
    @SystemApi
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user, @Nullable String receiverPermission, @Nullable Bundle options);
            @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission,
            @Nullable Bundle options);

    /**
     * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the
@@ -2911,7 +2915,8 @@ public abstract class Context {
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user, @Nullable String receiverPermission, int appOp);
            @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission,
            int appOp);

    /**
     * Version of
@@ -2944,7 +2949,8 @@ public abstract class Context {
     */
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public abstract void sendOrderedBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user, @Nullable String receiverPermission, BroadcastReceiver resultReceiver,
            @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission,
            BroadcastReceiver resultReceiver,
            @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
            @Nullable  Bundle initialExtras);

@@ -2957,10 +2963,10 @@ public abstract class Context {
    @SuppressWarnings("HiddenAbstractMethod")
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
            @Nullable String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
            @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
            @Nullable  Bundle initialExtras);
    public abstract void sendOrderedBroadcastAsUser(Intent intent,
            @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp,
            BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode,
            @Nullable String initialData, @Nullable  Bundle initialExtras);

    /**
     * Similar to above but takes an appOp as well, to enforce restrictions, and an options Bundle.
@@ -2971,10 +2977,10 @@ public abstract class Context {
    @SuppressWarnings("HiddenAbstractMethod")
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    @UnsupportedAppUsage
    public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
            @Nullable String receiverPermission, int appOp, @Nullable Bundle options,
            BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode,
            @Nullable String initialData, @Nullable  Bundle initialExtras);
    public abstract void sendOrderedBroadcastAsUser(Intent intent,
            @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp,
            @Nullable Bundle options, BroadcastReceiver resultReceiver, @Nullable Handler scheduler,
            int initialCode, @Nullable String initialData, @Nullable  Bundle initialExtras);

    /**
     * Similar to above but takes array of names of permissions that a receiver must hold in order
@@ -2987,8 +2993,8 @@ public abstract class Context {
    @SuppressWarnings("HiddenAbstractMethod")
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent,
            UserHandle user, String[] receiverPermissions, int appOp, Bundle options,
            BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
            @CanBeALL @CanBeCURRENT UserHandle user, String[] receiverPermissions, int appOp,
            Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
            String initialData, Bundle initialExtras) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }
@@ -3239,7 +3245,7 @@ public abstract class Context {
            android.Manifest.permission.BROADCAST_STICKY
    })
    public abstract void sendStickyBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user);
            @CanBeALL @CanBeCURRENT UserHandle user);

    /**
     * @hide
@@ -3252,7 +3258,7 @@ public abstract class Context {
            android.Manifest.permission.BROADCAST_STICKY
    })
    public abstract void sendStickyBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user, Bundle options);
            @CanBeALL @CanBeCURRENT UserHandle user, Bundle options);

    /**
     * <p>Version of
@@ -3292,7 +3298,7 @@ public abstract class Context {
            android.Manifest.permission.BROADCAST_STICKY
    })
    public abstract void sendStickyOrderedBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user, BroadcastReceiver resultReceiver,
            @CanBeALL @CanBeCURRENT UserHandle user, BroadcastReceiver resultReceiver,
            @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
            @Nullable Bundle initialExtras);

@@ -3322,7 +3328,7 @@ public abstract class Context {
            android.Manifest.permission.BROADCAST_STICKY
    })
    public abstract void removeStickyBroadcastAsUser(@RequiresPermission Intent intent,
            UserHandle user);
            @CanBeALL @CanBeCURRENT UserHandle user);

    /**
     * Register a BroadcastReceiver to be run in the main activity thread.  The
@@ -3646,8 +3652,8 @@ public abstract class Context {
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
    @UnsupportedAppUsage
    public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver,
            UserHandle user, IntentFilter filter, @Nullable String broadcastPermission,
            @Nullable Handler scheduler);
            @CanBeALL @CanBeCURRENT UserHandle user, IntentFilter filter,
            @Nullable String broadcastPermission, @Nullable Handler scheduler);

    /**
     * @hide
@@ -3687,7 +3693,8 @@ public abstract class Context {
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
    @UnsupportedAppUsage
    public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver,
            UserHandle user, IntentFilter filter, @Nullable String broadcastPermission,
            @CanBeALL @CanBeCURRENT UserHandle user, IntentFilter filter,
            @Nullable String broadcastPermission,
            @Nullable Handler scheduler, @RegisterReceiverFlags int flags);

    /**
@@ -3871,7 +3878,8 @@ public abstract class Context {
    @SuppressWarnings("HiddenAbstractMethod")
    @Nullable
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public abstract ComponentName startForegroundServiceAsUser(Intent service, UserHandle user);
    public abstract ComponentName startForegroundServiceAsUser(Intent service,
            @CanBeCURRENT UserHandle user);

    /**
     * Request that a given application service be stopped.  If the service is
@@ -3917,14 +3925,14 @@ public abstract class Context {
    @Nullable
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    @UnsupportedAppUsage
    public abstract ComponentName startServiceAsUser(Intent service, UserHandle user);
    public abstract ComponentName startServiceAsUser(Intent service, @CanBeCURRENT UserHandle user);

    /**
     * @hide like {@link #stopService(Intent)} but for a specific user.
     */
    @SuppressWarnings("HiddenAbstractMethod")
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public abstract boolean stopServiceAsUser(Intent service, UserHandle user);
    public abstract boolean stopServiceAsUser(Intent service, @CanBeCURRENT UserHandle user);

    /**
     * Connects to an application service, creating it if needed.  This defines
@@ -4122,7 +4130,7 @@ public abstract class Context {
            }, conditional = true)
    public boolean bindServiceAsUser(
            @NonNull @RequiresPermission Intent service, @NonNull ServiceConnection conn, int flags,
            @NonNull UserHandle user) {
            @NonNull @CanBeCURRENT UserHandle user) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

@@ -4138,7 +4146,7 @@ public abstract class Context {
    }, conditional = true)
    public boolean bindServiceAsUser(
            @NonNull @RequiresPermission Intent service, @NonNull ServiceConnection conn,
            @NonNull BindServiceFlags flags, @NonNull UserHandle user) {
            @NonNull BindServiceFlags flags, @NonNull @CanBeCURRENT UserHandle user) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

@@ -4154,7 +4162,7 @@ public abstract class Context {
            }, conditional = true)
    @UnsupportedAppUsage(trackingBug = 136728678)
    public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags,
            Handler handler, UserHandle user) {
            Handler handler, @CanBeCURRENT UserHandle user) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

@@ -4170,7 +4178,8 @@ public abstract class Context {
    }, conditional = true)
    @UnsupportedAppUsage(trackingBug = 136728678)
    public boolean bindServiceAsUser(@NonNull Intent service, @NonNull ServiceConnection conn,
            @NonNull BindServiceFlags flags, @NonNull Handler handler, @NonNull UserHandle user) {
            @NonNull BindServiceFlags flags, @NonNull Handler handler,
            @NonNull @CanBeCURRENT UserHandle user) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

Loading