Merge "Disable the control of draw over permission for SystemUI"

This commit is contained in:
Lei Yu
2016-09-26 23:26:32 +00:00
committed by Android (Google) Code Review
3 changed files with 74 additions and 1 deletions

View File

@@ -23,6 +23,9 @@ import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
import com.android.settingslib.applications.ApplicationsState.AppFilter;
import java.util.ArrayList;
import java.util.List;
/*
* Connects info of apps that draw overlay to the ApplicationsState. Wraps around the generic
* AppStateAppOpsBridge class to tailor to the semantics of SYSTEM_ALERT_WINDOW. Also provides app
@@ -62,6 +65,13 @@ public class AppStateOverlayBridge extends AppStateAppOpsBridge {
}
public static class OverlayState extends AppStateAppOpsBridge.PermissionState {
public final boolean controlEnabled;
private static final List<String> DISABLE_PACKAGE_LIST = new ArrayList<>();
static {
DISABLE_PACKAGE_LIST.add("com.android.systemui");
}
public OverlayState(PermissionState permissionState) {
super(permissionState.packageName, permissionState.userHandle);
@@ -69,6 +79,7 @@ public class AppStateOverlayBridge extends AppStateAppOpsBridge {
this.appOpMode = permissionState.appOpMode;
this.permissionDeclared = permissionState.permissionDeclared;
this.staticPermissionGranted = permissionState.staticPermissionGranted;
controlEnabled = !DISABLE_PACKAGE_LIST.contains(permissionState.packageName);
}
}

View File

@@ -144,7 +144,7 @@ public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenc
boolean isAllowed = mOverlayState.isPermissible();
mSwitchPref.setChecked(isAllowed);
// you cannot ask a user to grant you a permission you did not have!
mSwitchPref.setEnabled(mOverlayState.permissionDeclared);
mSwitchPref.setEnabled(mOverlayState.permissionDeclared && mOverlayState.controlEnabled);
mOverlayPrefs.setEnabled(isAllowed);
getPreferenceScreen().removePreference(mOverlayPrefs);