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

Unverified Commit d7a91705 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Kevin F. Haggerty
Browse files

Ask for PIN when granting permissions in front of lock screen

Test: - Revoked all permissions from camera
      - Set lock screen PIN
      - Opened camera app -> Camera app asks for permissions
      - Locked screen
      - Granted permission from in front of lock screen
Bug: 68777217, 65337954
Merged-In: I8358f1eba436786b25b2c2b0c12ac7dcfd334fec
Change-Id: I3f252e2c325bd638ea29d1ce63b12e391e13c8f0
(cherry picked from commit b5302e67)
parent 21a858e9
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;

import android.app.admin.DevicePolicyManager;
import android.app.KeyguardManager;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -302,6 +303,32 @@ public class GrantPermissionsActivity extends OverlayTouchActivity

    @Override
    public void onPermissionGrantResult(String name, boolean granted, boolean doNotAskAgain) {
        KeyguardManager kgm = getSystemService(KeyguardManager.class);

        if (kgm.isDeviceLocked()) {
            kgm.requestDismissKeyguard(this, new KeyguardManager.KeyguardDismissCallback() {
                        @Override
                        public void onDismissError() {
                            Log.e(LOG_TAG, "Cannot dismiss keyguard perm=" + name + " granted="
                                   + granted + " doNotAskAgain=" + doNotAskAgain);
                        }

                        @Override
                        public void onDismissCancelled() {
                            // do nothing (i.e. stay at the current permission group)
                        }

                        @Override
                        public void onDismissSucceeded() {
                            // Now the keyguard is dismissed, hence the device is not locked
                            // anymore
                            onPermissionGrantResult(name, granted, doNotAskAgain);
                        }
                    });

            return;
        }

        GroupState groupState = mRequestGrantPermissionGroups.get(name);
        if (groupState.mGroup != null) {
            if (granted) {