diff options
| author | Billy Lau <billylau@google.com> | 2015-07-30 17:22:04 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-30 17:22:04 +0000 |
| commit | 95026e032809f39fb2aece05e8b3d8f74eca77ea (patch) | |
| tree | 848c3ecf2f6407c47200a49e8da7821082f51500 /src/com/android/settings/applications | |
| parent | bebcdd0cb0405c03a72fe55bc4b198877a4f1516 (diff) | |
| parent | eb372c93ee00fa9365206129136501497e6341c7 (diff) | |
| download | packages_apps_Settings-95026e032809f39fb2aece05e8b3d8f74eca77ea.tar.gz packages_apps_Settings-95026e032809f39fb2aece05e8b3d8f74eca77ea.tar.bz2 packages_apps_Settings-95026e032809f39fb2aece05e8b3d8f74eca77ea.zip | |
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 'eb372c93ee00fa9365206129136501497e6341c7':
Bug: 22718745 Intents to 'draw over other apps' should go direct to the package's page instead of the top level one
Diffstat (limited to 'src/com/android/settings/applications')
7 files changed, 17 insertions, 6 deletions
diff --git a/src/com/android/settings/applications/AppStateAppOpsBridge.java b/src/com/android/settings/applications/AppStateAppOpsBridge.java index 20a00bdb0..1a693223f 100644 --- a/src/com/android/settings/applications/AppStateAppOpsBridge.java +++ b/src/com/android/settings/applications/AppStateAppOpsBridge.java @@ -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; } diff --git a/src/com/android/settings/applications/AppStateOverlayBridge.java b/src/com/android/settings/applications/AppStateOverlayBridge.java index 75900a43a..c60302807 100644 --- a/src/com/android/settings/applications/AppStateOverlayBridge.java +++ b/src/com/android/settings/applications/AppStateOverlayBridge.java @@ -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; } } diff --git a/src/com/android/settings/applications/AppStateUsageBridge.java b/src/com/android/settings/applications/AppStateUsageBridge.java index a1529017e..ef5a2c753 100644 --- a/src/com/android/settings/applications/AppStateUsageBridge.java +++ b/src/com/android/settings/applications/AppStateUsageBridge.java @@ -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; } } diff --git a/src/com/android/settings/applications/AppStateWriteSettingsBridge.java b/src/com/android/settings/applications/AppStateWriteSettingsBridge.java index e43b5f56f..9dbe13bc5 100644 --- a/src/com/android/settings/applications/AppStateWriteSettingsBridge.java +++ b/src/com/android/settings/applications/AppStateWriteSettingsBridge.java @@ -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; } } diff --git a/src/com/android/settings/applications/DrawOverlayDetails.java b/src/com/android/settings/applications/DrawOverlayDetails.java index 4ea45b1dc..ef92c21c5 100644 --- a/src/com/android/settings/applications/DrawOverlayDetails.java +++ b/src/com/android/settings/applications/DrawOverlayDetails.java @@ -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); diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java index 5317282cd..7af1d9bfe 100644 --- a/src/com/android/settings/applications/UsageAccessDetails.java +++ b/src/com/android/settings/applications/UsageAccessDetails.java @@ -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, diff --git a/src/com/android/settings/applications/WriteSettingsDetails.java b/src/com/android/settings/applications/WriteSettingsDetails.java index 30533c66d..c89e7b34d 100644 --- a/src/com/android/settings/applications/WriteSettingsDetails.java +++ b/src/com/android/settings/applications/WriteSettingsDetails.java @@ -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); |
