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

Commit 00b8a26b authored by Svet Ganov's avatar Svet Ganov Committed by Svetoslav Ganov
Browse files

No overlay when permissions shown - package installer

bug:26973205

Change-Id: Ibae1b971ceb1ea0d831435b9d5166482199e9184
parent 028e8e3c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.KILL_UID" />
    <uses-permission android:name="android.permission.MANAGE_APP_OPS_RESTRICTIONS" />

    <uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" />

+0 −5
Original line number Diff line number Diff line
@@ -269,11 +269,6 @@ public class GrantPermissionsActivity extends OverlayTouchActivity

    @Override
    public void onPermissionGrantResult(String name, boolean granted, boolean doNotAskAgain) {
        if (isObscuredTouch()) {
            showOverlayDialog();
            finish();
            return;
        }
        GroupState groupState = mRequestGrantPermissionGroups.get(name);
        if (groupState.mGroup != null) {
            if (granted) {
+17 −11
Original line number Diff line number Diff line
@@ -16,24 +16,30 @@
package com.android.packageinstaller.permission.ui;

import android.app.Activity;
import android.content.Intent;
import android.view.MotionEvent;
import android.app.AppOpsManager;
import android.os.Binder;
import android.os.IBinder;

public class OverlayTouchActivity extends Activity {
    private final IBinder mToken = new Binder();

    private boolean mObscuredTouch;

    public boolean isObscuredTouch() {
        return mObscuredTouch;
    @Override
    protected void onResume() {
        super.onResume();
        setOverlayAllowed(false);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        mObscuredTouch = (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0;
        return super.dispatchTouchEvent(event);
    protected void onPause() {
        super.onPause();
        setOverlayAllowed(true);
    }

    public void showOverlayDialog() {
        startActivity(new Intent(this, OverlayWarningDialog.class));
    private void setOverlayAllowed(boolean allowed) {
        AppOpsManager appOpsManager = getSystemService(AppOpsManager.class);
        if (appOpsManager != null) {
            appOpsManager.setUserRestriction(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
                    !allowed, mToken);
        }
    }
}
+0 −6
Original line number Diff line number Diff line
@@ -283,12 +283,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader
            return false;
        }

        OverlayTouchActivity activity = (OverlayTouchActivity) getActivity();
        if (activity.isObscuredTouch()) {
            activity.showOverlayDialog();
            return false;
        }

        addToggledGroup(group);

        if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) {
+0 −6
Original line number Diff line number Diff line
@@ -335,12 +335,6 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
            return false;
        }

        OverlayTouchActivity activity = (OverlayTouchActivity) getActivity();
        if (activity.isObscuredTouch()) {
            activity.showOverlayDialog();
            return false;
        }

        addToggledGroup(app.getPackageName(), app.getPermissionGroup());

        if (LocationUtils.isLocationGroupAndProvider(mPermissionApps.getGroupName(),
Loading