diff --git a/api/system-current.txt b/api/system-current.txt index ddfc1ccd8908d..775b80da43bd3 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -34417,6 +34417,7 @@ package android.os { method public deprecated void setUserRestrictions(android.os.Bundle); method public deprecated void setUserRestrictions(android.os.Bundle, android.os.UserHandle); method public static boolean supportsMultipleUsers(); + field public static final java.lang.String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED"; field public static final java.lang.String ALLOW_PARENT_PROFILE_APP_LINKING = "allow_parent_profile_app_linking"; field public static final java.lang.String DISALLOW_ADD_MANAGED_PROFILE = "no_add_managed_profile"; field public static final java.lang.String DISALLOW_ADD_USER = "no_add_user"; diff --git a/api/test-current.txt b/api/test-current.txt index fe67696735411..68b539a34c744 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -31719,6 +31719,7 @@ package android.os { method public deprecated void setUserRestrictions(android.os.Bundle); method public deprecated void setUserRestrictions(android.os.Bundle, android.os.UserHandle); method public static boolean supportsMultipleUsers(); + field public static final java.lang.String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED"; field public static final java.lang.String ALLOW_PARENT_PROFILE_APP_LINKING = "allow_parent_profile_app_linking"; field public static final java.lang.String DISALLOW_ADD_MANAGED_PROFILE = "no_add_managed_profile"; field public static final java.lang.String DISALLOW_ADD_USER = "no_add_user"; diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index a638cd43aba92..f6712f8405856 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -22,6 +22,7 @@ import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.annotation.UserIdInt; import android.annotation.WorkerThread; import android.app.Activity; @@ -762,6 +763,16 @@ public class UserManager { /** @hide */ public static final int PIN_VERIFICATION_SUCCESS = -1; + /** + * Sent when user restrictions have changed. + * + * @hide + */ + @SystemApi + @TestApi // To allow seeing it from CTS. + public static final String ACTION_USER_RESTRICTIONS_CHANGED = + "android.os.action.USER_RESTRICTIONS_CHANGED"; + /** * Error result indicating that this user is not allowed to add other users on this device. * This is a result code returned from the activity created by the intent diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index b9fcf4e39203d..989304919e1c6 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -1493,6 +1493,10 @@ public class UserManagerService extends IUserManager.Stub { listeners[i].onUserRestrictionsChanged(userId, newRestrictionsFinal, prevRestrictionsFinal); } + + final Intent broadcast = new Intent(UserManager.ACTION_USER_RESTRICTIONS_CHANGED) + .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); + mContext.sendBroadcastAsUser(broadcast, UserHandle.of(userId)); } }); }