VAULT Settings: add toggle for preventing a user from running in the background

This sounds interesting. Does this mean you can put another profile to rest from main profile?

    Themble Yes. As I understand, it means that if enabled, the secondary user profile will only be active when you are using it. Switching to another profile, will end the session of that first user profile. This has a few advantages:

    • The secondary profile will never run in the background
    • This means you can directly switch from one secondary user profile to another, and put the first secondary user profile at rest at the same time. Previously, the only way to put the profile at rest was to press end session, but this always brought you back to the owner profile.

    Themble I understand. But then there can't be noifications across profiles, right?

    Correct. The user profile needs to be running in the background for notifications to arrive there, and then be forwarded to your current user profile.

      Wow!

      Everyone is really on the stick. I just got it.

      Thank you to everyone involved.

      Themble
      Just played with the settings , this is a per user setting not a global one .

      is the launcher crashing for secondary users all the time fixed? this was error

      java.lang.NullPointerException: Attempt to read from field 'com.android.internal.util.LatencyTracker com.android.systemui.shade.NotificationPanelViewController.mLatencyTracker' on a null object reference in method 'void com.android.systemui.recents.OverviewProxyService$1$$ExternalSyntheticLambda9.accept(java.lang.Object)'
      	at android.os.Parcel.createExceptionOrNull(Parcel.java:3027)
      	at android.os.Parcel.createException(Parcel.java:3005)
      	at android.os.Parcel.readException(Parcel.java:2981)
      	at android.os.Parcel.readException(Parcel.java:2923)
      	at com.android.systemui.shared.recents.ISystemUiProxy$Stub$Proxy.onStatusBarMotionEvent(ISystemUiProxy.java:360)
      	at com.android.quickstep.SystemUiProxy.onStatusBarMotionEvent(SystemUiProxy.java:287)
      	at com.android.launcher3.uioverrides.touchcontrollers.StatusBarTouchController.dispatchTouchEvent(StatusBarTouchController.java:79)
      	at com.android.launcher3.uioverrides.touchcontrollers.StatusBarTouchController.onControllerInterceptTouchEvent(StatusBarTouchController.java:109)
      	at com.android.launcher3.views.BaseDragLayer.findControllerToHandleTouch(BaseDragLayer.java:183)
      	at com.android.launcher3.views.BaseDragLayer.findActiveController(BaseDragLayer.java:193)
      	at com.android.launcher3.views.BaseDragLayer.onInterceptTouchEvent(BaseDragLayer.java:163)
      	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2653)
      	at com.android.launcher3.views.BaseDragLayer.dispatchTouchEvent(BaseDragLayer.java:303)
      	at com.android.launcher3.dragndrop.DragLayer.dispatchTouchEvent(DragLayer.java:225)
      	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
      	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
      	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
      	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
      	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
      	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
      	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
      	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
      	at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:500)
      	at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1912)
      	at android.app.Activity.dispatchTouchEvent(Activity.java:4307)
      	at com.android.launcher3.Launcher.dispatchTouchEvent(Launcher.java:2111)
      	at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:458)
      	at android.view.View.dispatchPointerEvent(View.java:15309)
      	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6774)
      	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6574)
      	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6030)
      	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6087)
      	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6053)
      	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6218)
      	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6061)
      	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6275)
      	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6034)
      	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6087)
      	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6053)
      	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6061)
      	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6034)
      	at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9202)
      	at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9153)
      	at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9122)
      	at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9325)
      	at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:267)
      	at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
      	at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:247)
      	at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:9282)
      	at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:9416)
      	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
      	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
      	at android.view.Choreographer.doCallbacks(Choreographer.java:899)
      	at android.view.Choreographer.doFrame(Choreographer.java:824)
      	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
      	at android.os.Handler.handleCallback(Handler.java:942)
      	at android.os.Handler.dispatchMessage(Handler.java:99)
      	at android.os.Looper.loopOnce(Looper.java:201)
      	at android.os.Looper.loop(Looper.java:288)
      	at android.app.ActivityThread.main(ActivityThread.java:7937)
      	at java.lang.reflect.Method.invoke(Native Method)
      	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
      	at com.android.internal.os.ExecInit.main(ExecInit.java:49)
      	at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
      	at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:355)

        My fingerprint unlock disappeared completely after the update 😮 Not even an option in the Security settings. What's up? Pixel 6a

          Strange. Just updated my 6a and it is functioning correctly.

          Do third party clock apps work nicely with GrapheneOS? Let say, I set an alarm on a third party click app (downloaded from Fdroid) and the device somehow restarts, will the alarm trigger on time or do I need to unlock the device once?

            treequell It's the system user (I don't have multiple users toggled). That's exactly where I'm looking and the option is not there. Screen lock and then immediately Auto reboot. When I go into Screen lock settings the only available options are None, Swipe, PIN and Password.

            Another issue I just discovered is that my phone started dropping calls after 30s. Had it with multiple callers, both when I called and received. Network coverage is good.

              siabadaba That's strange! Could you do something for me to help investigate this further?

              Enable multiple users, create a secondary user, and then switch to that secondary user. Then have a look in Settings > Security, and tell me if you have the same issue with Fingerprint Unlock being hidden. That will help to establish if it's a device-wide issue or a strange configuration in your system user. You can always delete the secondary user after.

                treequell Same thing in the new user. Screen lock and then immediately Scramble PIN input. No fingerprint. Also in the initial setup that option was not present

                  SoulKeeper It's up to the clock app in that case, which would need to support direct boot to be able to use part of its functionality while the phone is in BFU state. It's not up to GrapheneOS, but rather the app itself.

                  As an example of this, GrapheneOS actually contributed direct boot support to Florisboard, which means it can be used to unlock the phone while in BFU state where it otherwise wouldn't.

                  ''prevent adding guest user on lockscreen via adding new users on lockscreen is disabled (UI only appears on large screens such as the Pixel Tablet)''

                  This one is interesting. Not wanting to offend anyone, it is just an observation. Even if one tries to be as mindful in building secure systems, major flaws will always be present. Keep up the good work.

                  • [deleted]

                  siabadaba Just checking, do you have a pin or pw set? If not, you need to create one before adding your fingerprints. These are a prerequisite to decrypt the profile/device from rest and as a fallback to fingerprints for when they fail.