am 95026e03
: am eb372c93
: Merge "Bug: 22718745 Intents to \'draw over other apps\' should go direct to the package\'s page instead of the top level one" into mnc-dev
* commit '95026e032809f39fb2aece05e8b3d8f74eca77ea': Bug: 22718745 Intents to 'draw over other apps' should go direct to the package's page instead of the top level one
This commit is contained in:
@@ -88,10 +88,12 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
|
||||
int[] permissionFlags = permissionState.packageInfo.requestedPermissionsFlags;
|
||||
if (requestedPermissions != null) {
|
||||
for (int i = 0; i < requestedPermissions.length; i++) {
|
||||
if (mPermissions[0].equals(requestedPermissions[i]) &&
|
||||
(permissionFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
|
||||
if (mPermissions[0].equals(requestedPermissions[i])) {
|
||||
permissionState.permissionDeclared = true;
|
||||
break;
|
||||
if ((permissionFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
|
||||
permissionState.staticPermissionGranted = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -164,7 +166,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
|
||||
}
|
||||
|
||||
/*
|
||||
* This method will set the packageInfo and permissionDeclared field of the associated
|
||||
* This method will set the packageInfo and staticPermissionGranted field of the associated
|
||||
* PermissionState, which describes a particular package.
|
||||
*/
|
||||
private void loadPermissionsStates(SparseArray<ArrayMap<String, PermissionState>> entries) {
|
||||
@@ -185,7 +187,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
|
||||
final PermissionState pe = entriesForProfile.get(packageInfo.packageName);
|
||||
if (pe != null) {
|
||||
pe.packageInfo = packageInfo;
|
||||
pe.permissionDeclared = true;
|
||||
pe.staticPermissionGranted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -279,6 +281,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
|
||||
public final String packageName;
|
||||
public final UserHandle userHandle;
|
||||
public PackageInfo packageInfo;
|
||||
public boolean staticPermissionGranted;
|
||||
public boolean permissionDeclared;
|
||||
public int appOpMode;
|
||||
|
||||
@@ -293,7 +296,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
|
||||
// permission (this means pre-M gets approval during install time; M apps gets approval
|
||||
// during runtime.
|
||||
if (appOpMode == AppOpsManager.MODE_DEFAULT) {
|
||||
return permissionDeclared;
|
||||
return staticPermissionGranted;
|
||||
}
|
||||
return appOpMode == AppOpsManager.MODE_ALLOWED;
|
||||
}
|
||||
|
@@ -66,6 +66,7 @@ public class AppStateOverlayBridge extends AppStateAppOpsBridge {
|
||||
this.packageInfo = permissionState.packageInfo;
|
||||
this.appOpMode = permissionState.appOpMode;
|
||||
this.permissionDeclared = permissionState.permissionDeclared;
|
||||
this.staticPermissionGranted = permissionState.staticPermissionGranted;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -57,6 +57,7 @@ public class AppStateUsageBridge extends AppStateAppOpsBridge {
|
||||
this.packageInfo = permissionState.packageInfo;
|
||||
this.appOpMode = permissionState.appOpMode;
|
||||
this.permissionDeclared = permissionState.permissionDeclared;
|
||||
this.staticPermissionGranted = permissionState.staticPermissionGranted;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -66,6 +66,7 @@ public class AppStateWriteSettingsBridge extends AppStateAppOpsBridge {
|
||||
this.packageInfo = permissionState.packageInfo;
|
||||
this.appOpMode = permissionState.appOpMode;
|
||||
this.permissionDeclared = permissionState.permissionDeclared;
|
||||
this.staticPermissionGranted = permissionState.staticPermissionGranted;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -143,6 +143,8 @@ 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);
|
||||
mOverlayPrefs.setEnabled(isAllowed);
|
||||
getPreferenceScreen().removePreference(mOverlayPrefs);
|
||||
|
||||
|
@@ -130,6 +130,7 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc
|
||||
|
||||
boolean hasAccess = mUsageState.isPermissible();
|
||||
mSwitchPref.setChecked(hasAccess);
|
||||
mSwitchPref.setEnabled(mUsageState.permissionDeclared);
|
||||
mUsagePrefs.setEnabled(hasAccess);
|
||||
|
||||
ResolveInfo resolveInfo = mPm.resolveActivityAsUser(mSettingsIntent,
|
||||
|
@@ -142,6 +142,8 @@ public class WriteSettingsDetails extends AppInfoWithHeader implements OnPrefere
|
||||
|
||||
boolean canWrite = mWriteSettingsState.isPermissible();
|
||||
mSwitchPref.setChecked(canWrite);
|
||||
// you can't ask a user for a permission you didn't even declare!
|
||||
mSwitchPref.setEnabled(mWriteSettingsState.permissionDeclared);
|
||||
mWriteSettingsPrefs.setEnabled(canWrite);
|
||||
getPreferenceScreen().removePreference(mWriteSettingsPrefs);
|
||||
|
||||
|
Reference in New Issue
Block a user