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

Commit 5eda1924 authored by Meng Wang's avatar Meng Wang Committed by android-build-merger
Browse files

Merge "System API: Context#registerReceiverForAllUsers"

am: 9e590914

Change-Id: I2d98300ad4958d19e69dcdfda83e9d5df086d43a
parents 01d1dd28 9e590914
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1371,6 +1371,10 @@ package android.bluetooth.le {
package android.content {
  public abstract class BroadcastReceiver {
    method @NonNull public final android.os.UserHandle getSendingUser();
  }
  public class ContentProviderClient implements java.lang.AutoCloseable {
    method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
  }
@@ -1387,6 +1391,7 @@ package android.content {
    method @NonNull public android.content.Context createPackageContextAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
    method @Nullable public abstract java.io.File getPreloadsFileCache();
    method public abstract boolean isCredentialProtectedStorage();
    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.content.Intent registerReceiverForAllUsers(@Nullable android.content.BroadcastReceiver, @NonNull android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
    method public abstract void sendBroadcast(android.content.Intent, @Nullable String, @Nullable android.os.Bundle);
    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle);
    method public abstract void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+14 −0
Original line number Diff line number Diff line
@@ -126,6 +126,13 @@ class ReceiverRestrictedContext extends ContextWrapper {
        }
    }

    @Override
    public Intent registerReceiverForAllUsers(BroadcastReceiver receiver, IntentFilter filter,
            String broadcastPermission, Handler scheduler) {
        return registerReceiverAsUser(
                receiver, UserHandle.ALL, filter, broadcastPermission, scheduler);
    }

    @Override
    public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
            IntentFilter filter, String broadcastPermission, Handler scheduler) {
@@ -1519,6 +1526,13 @@ class ContextImpl extends Context {
                filter, broadcastPermission, scheduler, getOuterContext(), flags);
    }

    @Override
    public Intent registerReceiverForAllUsers(BroadcastReceiver receiver,
            IntentFilter filter, String broadcastPermission, Handler scheduler) {
        return registerReceiverAsUser(receiver, UserHandle.ALL,
                filter, broadcastPermission, scheduler);
    }

    @Override
    public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
            IntentFilter filter, String broadcastPermission, Handler scheduler) {
+17 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.content;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.app.ActivityManager;
import android.app.ActivityThread;
@@ -25,6 +27,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Log;
import android.util.Slog;

@@ -623,6 +626,20 @@ public abstract class BroadcastReceiver {
        return mPendingResult;
    }

    /**
     * Returns the user that the broadcast was sent to.
     *
     * <p>It can be used in a receiver registered by
     * {@link Context#registerReceiverForAllUsers Context.registerReceiverForAllUsers()}
     * to determine on which user the broadcast was sent.
     *
     * @hide
     */
    @SystemApi
    public final @NonNull UserHandle getSendingUser() {
        return UserHandle.of(getSendingUserId());
    }

    /** @hide */
    public int getSendingUserId() {
        return mPendingResult.mSendingUser;
+31 −0
Original line number Diff line number Diff line
@@ -2799,6 +2799,37 @@ public abstract class Context {
            IntentFilter filter, @Nullable String broadcastPermission,
            @Nullable Handler scheduler, @RegisterReceiverFlags int flags);

    /**
     * Same as {@link #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)}
     * but this receiver will receive broadcasts that are sent to all users. The receiver can
     * use {@link BroadcastReceiver#getSendingUser} to determine on which user the broadcast
     * was sent.
     *
     * @param receiver The BroadcastReceiver to handle the broadcast.
     * @param filter Selects the Intent broadcasts to be received.
     * @param broadcastPermission String naming a permissions that a
     *      broadcaster must hold in order to send an Intent to you. If {@code null},
     *      no permission is required.
     * @param scheduler Handler identifying the thread that will receive
     *      the Intent. If {@code null}, the main thread of the process will be used.
     *
     * @return The first sticky intent found that matches <var>filter</var>,
     *         or {@code null} if there are none.
     *
     * @see #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)
     * @see #sendBroadcast
     * @see #unregisterReceiver
     * @hide
     */
    @Nullable
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
    @SystemApi
    public Intent registerReceiverForAllUsers(@Nullable BroadcastReceiver receiver,
            @NonNull IntentFilter filter, @Nullable String broadcastPermission,
            @Nullable Handler scheduler) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

    /**
     * @hide
     * Same as {@link #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)
+11 −0
Original line number Diff line number Diff line
@@ -662,6 +662,17 @@ public class ContextWrapper extends Context {
                scheduler, flags);
    }

    /** @hide */
    @Override
    @Nullable
    @SystemApi
    public Intent registerReceiverForAllUsers(@Nullable BroadcastReceiver receiver,
            @NonNull IntentFilter filter, @Nullable String broadcastPermission,
            @Nullable Handler scheduler) {
        return mBase.registerReceiverForAllUsers(receiver, filter, broadcastPermission,
                scheduler);
    }

    /** @hide */
    @Override
    @UnsupportedAppUsage
Loading