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

Commit 64fd8c0b authored by Tony Mak's avatar Tony Mak
Browse files

Allow caller to specify target to start in setQuietModeEnabled

So, UMS can start the target once user is unlocked.

Test: No secure lock. Try turn off and on work mode by tapping work app.
Test: Have secure lock. Try turn off and on work mode by tapping work app.
Test: Turn off work mode. Reboot. Try to tap on any work app to turn on work mode.

BUG:69926710

Change-Id: Iaaccd5d763f7e36e5a43bad5261f1eb16060f9d6
parent f5cf390e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -667,4 +667,10 @@ interface IActivityManager {

     void setShowWhenLocked(in IBinder token, boolean showWhenLocked);
     void setTurnScreenOn(in IBinder token, boolean turnScreenOn);

     /**
      *  Similar to {@link #startUserInBackground(int userId), but with a listener to report
      *  user unlock progress.
      */
     boolean startUserInBackgroundWithListener(int userid, IProgressListener unlockProgressListener);
}
+1 −1
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ interface IUserManager {
    void setDefaultGuestRestrictions(in Bundle restrictions);
    Bundle getDefaultGuestRestrictions();
    boolean markGuestForDeletion(int userHandle);
    void setQuietModeEnabled(int userHandle, boolean enableQuietMode);
    void setQuietModeEnabled(int userHandle, boolean enableQuietMode, in IntentSender target);
    boolean isQuietModeEnabled(int userHandle);
    boolean trySetQuietModeDisabled(int userHandle, in IntentSender target);
    void setSeedAccountData(int userHandle, in String accountName,
+7 −3
Original line number Diff line number Diff line
@@ -2115,7 +2115,7 @@ public class UserManager {
     */
    public void setQuietModeEnabled(@UserIdInt int userHandle, boolean enableQuietMode) {
        try {
            mService.setQuietModeEnabled(userHandle, enableQuietMode);
            mService.setQuietModeEnabled(userHandle, enableQuietMode, null);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
@@ -2142,10 +2142,14 @@ public class UserManager {
     * unlocking. If the user is already unlocked, we call through to {@link #setQuietModeEnabled}
     * directly.
     *
     * @return true if the quiet mode was disabled immediately
     * @param userHandle The user that is going to disable quiet mode.
     * @param target The target to launch when the user is unlocked.
     * @return {@code true} if quiet mode is disabled without showing confirm credentials screen,
     *         {@code false} otherwise.
     * @hide
     */
    public boolean trySetQuietModeDisabled(@UserIdInt int userHandle, IntentSender target) {
    public boolean trySetQuietModeDisabled(
            @UserIdInt int userHandle, @Nullable IntentSender target) {
        try {
            return mService.trySetQuietModeDisabled(userHandle, target);
        } catch (RemoteException re) {
+1 −8
Original line number Diff line number Diff line
@@ -111,14 +111,7 @@ public class UnlaunchableAppActivity extends Activity
    @Override
    public void onClick(DialogInterface dialog, int which) {
        if (mReason == UNLAUNCHABLE_REASON_QUIET_MODE && which == DialogInterface.BUTTON_POSITIVE) {
            if (UserManager.get(this).trySetQuietModeDisabled(mUserId, mTarget)
                    && mTarget != null) {
                try {
                    startIntentSenderForResult(mTarget, -1, null, 0, 0, 0);
                } catch (IntentSender.SendIntentException e) {
                    /* ignore */
                }
            }
            UserManager.get(this).trySetQuietModeDisabled(mUserId, mTarget);
        }
    }

+7 −1
Original line number Diff line number Diff line
@@ -23824,7 +23824,13 @@ public class ActivityManagerService extends IActivityManager.Stub
     */
    @Override
    public boolean startUserInBackground(final int userId) {
        return mUserController.startUser(userId, /* foreground */ false);
        return startUserInBackgroundWithListener(userId, null);
    }
    @Override
    public boolean startUserInBackgroundWithListener(final int userId,
                @Nullable IProgressListener unlockListener) {
        return mUserController.startUser(userId, /* foreground */ false, unlockListener);
    }
    @Override
Loading