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

Commit 7bd35c7e authored by justinzhang's avatar justinzhang
Browse files

Use DeviecPolicyManager to authenticate lock task

Uncomment lines in ActivityManagerService. Before start lock task,
ActivityMangerService calls DevicePolicyManager to see if the
app can go into lock task.

Change-Id: I9ad784d7cc637d45884dcb2623b4c59ff802f93d
parent bee9d712
Loading
Loading
Loading
Loading
+19 −11
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.app.AppOpsManager;
import android.app.IActivityContainer;
import android.app.IActivityContainerCallback;
import android.app.IAppTask;
import android.app.admin.DevicePolicyManager;
import android.appwidget.AppWidgetManager;
import android.graphics.Rect;
import android.os.BatteryStats;
@@ -7576,12 +7577,9 @@ public final class ActivityManagerService extends ActivityManagerNative
    }
    private boolean isLockTaskAuthorized(ComponentName name) {
//        enforceCallingPermission(android.Manifest.permission.REORDER_TASKS,
//                "startLockTaskMode()");
//        DevicePolicyManager dpm = (DevicePolicyManager)
//                mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
//        return dpm != null && dpm.isLockTaskPermitted(name);
        return true;
        final DevicePolicyManager dpm = (DevicePolicyManager)
                mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
        return dpm != null && dpm.isLockTaskPermitted(name);
    }
    private void startLockTaskMode(TaskRecord task) {
@@ -7640,8 +7638,18 @@ public final class ActivityManagerService extends ActivityManagerNative
    @Override
    public void stopLockTaskMode() {
//        enforceCallingPermission(android.Manifest.permission.REORDER_TASKS,
//                "stopLockTaskMode()");
        // Check if the calling task is eligible to use lock task
        final int uid = Binder.getCallingUid();
        try {
            final String name = AppGlobals.getPackageManager().getNameForUid(uid);
            if (!isLockTaskAuthorized(new ComponentName(name, name))) {
                return;
            }
        } catch (RemoteException e) {
            Log.d(TAG, "stopLockTaskMode " + e);
            return;
        }
        // Stop lock task
        synchronized (this) {
            mStackSupervisor.setLockTaskModeLocked(null);
        }