Loading core/java/android/app/supervision/ISupervisionAppService.aidl→core/java/android/app/supervision/ISupervisionListener.aidl +2 −3 Original line number Original line Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.app.supervision; /** /** * @hide * @hide */ */ interface ISupervisionAppService { oneway interface ISupervisionListener { void onEnabled(); oneway void onSetSupervisionEnabled(int userId, boolean enabled); void onDisabled(); } } core/java/android/app/supervision/ISupervisionManager.aidl +3 −0 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app.supervision; package android.app.supervision; import android.content.Intent; import android.content.Intent; import android.app.supervision.ISupervisionListener; import android.app.supervision.SupervisionRecoveryInfo; import android.app.supervision.SupervisionRecoveryInfo; /** /** Loading @@ -33,4 +34,6 @@ interface ISupervisionManager { oneway void setSupervisionRecoveryInfo(in SupervisionRecoveryInfo recoveryInfo); oneway void setSupervisionRecoveryInfo(in SupervisionRecoveryInfo recoveryInfo); SupervisionRecoveryInfo getSupervisionRecoveryInfo(); SupervisionRecoveryInfo getSupervisionRecoveryInfo(); boolean hasSupervisionCredentials(); boolean hasSupervisionCredentials(); oneway void registerSupervisionListener(in ISupervisionListener listener); oneway void unregisterSupervisionListener(in ISupervisionListener listener); } } core/java/android/app/supervision/SupervisionAppService.java +8 −9 Original line number Original line Diff line number Diff line Loading @@ -45,17 +45,16 @@ public class SupervisionAppService extends Service { public static final String ACTION_SUPERVISION_APP_SERVICE = public static final String ACTION_SUPERVISION_APP_SERVICE = "android.app.action.SUPERVISION_APP_SERVICE"; "android.app.action.SUPERVISION_APP_SERVICE"; private final ISupervisionAppService mBinder = private final ISupervisionListener mBinder = new ISupervisionAppService.Stub() { new ISupervisionListener.Stub() { @Override @Override public void onEnabled() { public void onSetSupervisionEnabled(int userId, boolean enabled) { if (enabled) { SupervisionAppService.this.onEnabled(); SupervisionAppService.this.onEnabled(); } } else { @Override public void onDisabled() { SupervisionAppService.this.onDisabled(); SupervisionAppService.this.onDisabled(); } } } }; }; @Nullable @Nullable Loading core/java/android/app/supervision/SupervisionManager.java +68 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.Manifest.permission.QUERY_USERS; import static android.permission.flags.Flags.FLAG_ENABLE_SYSTEM_SUPERVISION_ROLE_BEHAVIOR; import static android.permission.flags.Flags.FLAG_ENABLE_SYSTEM_SUPERVISION_ROLE_BEHAVIOR; import android.annotation.FlaggedApi; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemApi; Loading @@ -44,6 +45,41 @@ import android.os.RemoteException; @SystemApi @SystemApi @FlaggedApi(Flags.FLAG_SUPERVISION_MANAGER_APIS) @FlaggedApi(Flags.FLAG_SUPERVISION_MANAGER_APIS) public class SupervisionManager { public class SupervisionManager { /** * Listener for supervision state changes. * * @hide */ public abstract static class SupervisionListener { protected final ISupervisionListener mListener = new ISupervisionListener.Stub() { @Override public void onSetSupervisionEnabled(int userId, boolean enabled) { if (enabled) { onSupervisionEnabled(userId); } else { onSupervisionDisabled(userId); } } }; /** * Called after supervision has been enabled for a given user. * * @param userId Int ID of the user for whom supervision was enabled. * @hide */ public abstract void onSupervisionEnabled(@UserIdInt int userId); /** * Called after supervision has been enabled for a given user. * * @param userId Int ID of the user for whom supervision was enabled. * @hide */ public abstract void onSupervisionDisabled(@UserIdInt int userId); } private final Context mContext; private final Context mContext; @Nullable private final ISupervisionManager mService; @Nullable private final ISupervisionManager mService; Loading Loading @@ -263,4 +299,36 @@ public class SupervisionManager { } } return false; return false; } } /** * Registers a listener to be notified on supervision state changes. * * @param listener Listener to be registered. Can't be null. * @hide */ public void registerSupervisionListener(@NonNull SupervisionListener listener) { if (mService != null) { try { mService.registerSupervisionListener(listener.mListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } /** * Unregisters a listener that was previously registered. * * @param listener Listener to be unregistered. Can't be null. * @hide */ public void unregisterSupervisionListener(@NonNull SupervisionListener listener) { if (mService != null) { try { mService.unregisterSupervisionListener(listener.mListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } } } services/core/java/com/android/server/appbinding/finders/SupervisionAppServiceFinder.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -17,7 +17,7 @@ package com.android.server.appbinding.finders; import android.app.role.OnRoleHoldersChangedListener; import android.app.role.OnRoleHoldersChangedListener; import android.app.role.RoleManager; import android.app.role.RoleManager; import android.app.supervision.ISupervisionAppService; import android.app.supervision.ISupervisionListener; import android.app.supervision.SupervisionAppService; import android.app.supervision.SupervisionAppService; import android.app.supervision.flags.Flags; import android.app.supervision.flags.Flags; import android.content.Context; import android.content.Context; Loading @@ -37,7 +37,7 @@ import java.util.function.BiConsumer; /** Finds the @{link SupervisionAppService} implementation within the supervision app. */ /** Finds the @{link SupervisionAppService} implementation within the supervision app. */ public class SupervisionAppServiceFinder public class SupervisionAppServiceFinder extends AppServiceFinder<SupervisionAppService, ISupervisionAppService> { extends AppServiceFinder<SupervisionAppService, ISupervisionListener> { private final RoleManager mRoleManager; private final RoleManager mRoleManager; Loading Loading @@ -66,8 +66,8 @@ public class SupervisionAppServiceFinder } } @Override @Override public ISupervisionAppService asInterface(IBinder obj) { public ISupervisionListener asInterface(IBinder obj) { return ISupervisionAppService.Stub.asInterface(obj); return ISupervisionListener.Stub.asInterface(obj); } } @Nullable @Nullable Loading Loading
core/java/android/app/supervision/ISupervisionAppService.aidl→core/java/android/app/supervision/ISupervisionListener.aidl +2 −3 Original line number Original line Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.app.supervision; /** /** * @hide * @hide */ */ interface ISupervisionAppService { oneway interface ISupervisionListener { void onEnabled(); oneway void onSetSupervisionEnabled(int userId, boolean enabled); void onDisabled(); } }
core/java/android/app/supervision/ISupervisionManager.aidl +3 −0 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app.supervision; package android.app.supervision; import android.content.Intent; import android.content.Intent; import android.app.supervision.ISupervisionListener; import android.app.supervision.SupervisionRecoveryInfo; import android.app.supervision.SupervisionRecoveryInfo; /** /** Loading @@ -33,4 +34,6 @@ interface ISupervisionManager { oneway void setSupervisionRecoveryInfo(in SupervisionRecoveryInfo recoveryInfo); oneway void setSupervisionRecoveryInfo(in SupervisionRecoveryInfo recoveryInfo); SupervisionRecoveryInfo getSupervisionRecoveryInfo(); SupervisionRecoveryInfo getSupervisionRecoveryInfo(); boolean hasSupervisionCredentials(); boolean hasSupervisionCredentials(); oneway void registerSupervisionListener(in ISupervisionListener listener); oneway void unregisterSupervisionListener(in ISupervisionListener listener); } }
core/java/android/app/supervision/SupervisionAppService.java +8 −9 Original line number Original line Diff line number Diff line Loading @@ -45,17 +45,16 @@ public class SupervisionAppService extends Service { public static final String ACTION_SUPERVISION_APP_SERVICE = public static final String ACTION_SUPERVISION_APP_SERVICE = "android.app.action.SUPERVISION_APP_SERVICE"; "android.app.action.SUPERVISION_APP_SERVICE"; private final ISupervisionAppService mBinder = private final ISupervisionListener mBinder = new ISupervisionAppService.Stub() { new ISupervisionListener.Stub() { @Override @Override public void onEnabled() { public void onSetSupervisionEnabled(int userId, boolean enabled) { if (enabled) { SupervisionAppService.this.onEnabled(); SupervisionAppService.this.onEnabled(); } } else { @Override public void onDisabled() { SupervisionAppService.this.onDisabled(); SupervisionAppService.this.onDisabled(); } } } }; }; @Nullable @Nullable Loading
core/java/android/app/supervision/SupervisionManager.java +68 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.Manifest.permission.QUERY_USERS; import static android.permission.flags.Flags.FLAG_ENABLE_SYSTEM_SUPERVISION_ROLE_BEHAVIOR; import static android.permission.flags.Flags.FLAG_ENABLE_SYSTEM_SUPERVISION_ROLE_BEHAVIOR; import android.annotation.FlaggedApi; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemApi; Loading @@ -44,6 +45,41 @@ import android.os.RemoteException; @SystemApi @SystemApi @FlaggedApi(Flags.FLAG_SUPERVISION_MANAGER_APIS) @FlaggedApi(Flags.FLAG_SUPERVISION_MANAGER_APIS) public class SupervisionManager { public class SupervisionManager { /** * Listener for supervision state changes. * * @hide */ public abstract static class SupervisionListener { protected final ISupervisionListener mListener = new ISupervisionListener.Stub() { @Override public void onSetSupervisionEnabled(int userId, boolean enabled) { if (enabled) { onSupervisionEnabled(userId); } else { onSupervisionDisabled(userId); } } }; /** * Called after supervision has been enabled for a given user. * * @param userId Int ID of the user for whom supervision was enabled. * @hide */ public abstract void onSupervisionEnabled(@UserIdInt int userId); /** * Called after supervision has been enabled for a given user. * * @param userId Int ID of the user for whom supervision was enabled. * @hide */ public abstract void onSupervisionDisabled(@UserIdInt int userId); } private final Context mContext; private final Context mContext; @Nullable private final ISupervisionManager mService; @Nullable private final ISupervisionManager mService; Loading Loading @@ -263,4 +299,36 @@ public class SupervisionManager { } } return false; return false; } } /** * Registers a listener to be notified on supervision state changes. * * @param listener Listener to be registered. Can't be null. * @hide */ public void registerSupervisionListener(@NonNull SupervisionListener listener) { if (mService != null) { try { mService.registerSupervisionListener(listener.mListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } /** * Unregisters a listener that was previously registered. * * @param listener Listener to be unregistered. Can't be null. * @hide */ public void unregisterSupervisionListener(@NonNull SupervisionListener listener) { if (mService != null) { try { mService.unregisterSupervisionListener(listener.mListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } } }
services/core/java/com/android/server/appbinding/finders/SupervisionAppServiceFinder.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -17,7 +17,7 @@ package com.android.server.appbinding.finders; import android.app.role.OnRoleHoldersChangedListener; import android.app.role.OnRoleHoldersChangedListener; import android.app.role.RoleManager; import android.app.role.RoleManager; import android.app.supervision.ISupervisionAppService; import android.app.supervision.ISupervisionListener; import android.app.supervision.SupervisionAppService; import android.app.supervision.SupervisionAppService; import android.app.supervision.flags.Flags; import android.app.supervision.flags.Flags; import android.content.Context; import android.content.Context; Loading @@ -37,7 +37,7 @@ import java.util.function.BiConsumer; /** Finds the @{link SupervisionAppService} implementation within the supervision app. */ /** Finds the @{link SupervisionAppService} implementation within the supervision app. */ public class SupervisionAppServiceFinder public class SupervisionAppServiceFinder extends AppServiceFinder<SupervisionAppService, ISupervisionAppService> { extends AppServiceFinder<SupervisionAppService, ISupervisionListener> { private final RoleManager mRoleManager; private final RoleManager mRoleManager; Loading Loading @@ -66,8 +66,8 @@ public class SupervisionAppServiceFinder } } @Override @Override public ISupervisionAppService asInterface(IBinder obj) { public ISupervisionListener asInterface(IBinder obj) { return ISupervisionAppService.Stub.asInterface(obj); return ISupervisionListener.Stub.asInterface(obj); } } @Nullable @Nullable Loading