summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2018-01-23 21:01:07 +0000
committerPhilip P. Moltmann <moltmann@google.com>2018-01-23 21:07:27 +0000
commit1259f44fd9d90ad56ce71db643aee3554f1ec68b (patch)
tree417aab24cdcc1c846e005c48b92baf55305bec16 /src/com
parentcdf84d3abc1df49ce632975814d96a982a08a5e7 (diff)
downloadandroid_packages_apps_PackageInstaller-1259f44fd9d90ad56ce71db643aee3554f1ec68b.tar.gz
android_packages_apps_PackageInstaller-1259f44fd9d90ad56ce71db643aee3554f1ec68b.tar.bz2
android_packages_apps_PackageInstaller-1259f44fd9d90ad56ce71db643aee3554f1ec68b.zip
Revert "Skip grant dialog when permission are granted"
This reverts commit cdf84d3abc1df49ce632975814d96a982a08a5e7. Reason for revert: Bugs 72387749 and 72384027 Bug: 72384027 Bug: 72387749 Test: Just a revert Change-Id: I2077cc3205c3a71a641ed50219c3c5d8cd449958
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java121
1 files changed, 10 insertions, 111 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index 9d95e554..a8096c26 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -33,7 +33,6 @@ import android.os.Build;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
-import android.util.ArraySet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -73,13 +72,6 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
boolean mResultSet;
- private PackageManager.OnPermissionsChangedListener mPermissionChangeListener;
-
- private int getPermissionPolicy() {
- DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
- return devicePolicyManager.getPermissionPolicy(null);
- }
-
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -120,13 +112,6 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
return;
}
- try {
- mPermissionChangeListener = new PermissionChangeListener();
- } catch (NameNotFoundException e) {
- setResultAndFinish();
- return;
- }
-
PackageInfo callingPackageInfo = getCallingPackageInfo();
if (callingPackageInfo == null || callingPackageInfo.requestedPermissions == null
@@ -144,7 +129,11 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
return;
}
- updateAlreadyGrantedPermissions(getCallingPackageInfo(), getPermissionPolicy());
+ DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
+ final int permissionPolicy = devicePolicyManager.getPermissionPolicy(null);
+
+ // If calling package is null we default to deny all.
+ updateDefaultResults(callingPackageInfo, permissionPolicy);
mAppPermissions = new AppPermissions(this, callingPackageInfo, null, false,
new Runnable() {
@@ -172,7 +161,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
// We allow the user to choose only non-fixed permissions. A permission
// is fixed either by device policy or the user denying with prejudice.
if (!group.isUserFixed() && !group.isPolicyFixed()) {
- switch (getPermissionPolicy()) {
+ switch (permissionPolicy) {
case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: {
if (!group.areRuntimePermissionsGranted()) {
group.grantRuntimePermissions(false, computeAffectedPermissions(
@@ -238,78 +227,6 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
}
}
-
- /**
- * Update the {@link #mRequestedPermissions} if the system reports them as granted.
- *
- * <p>This also updates the {@link #mAppPermissions} state and switches to the next group grant
- * request if the current group becomes granted.
- */
- private void updateIfPermissionsWereGranted() {
- updateAlreadyGrantedPermissions(getCallingPackageInfo(), getPermissionPolicy());
-
- ArraySet<String> grantedPermissionNames = new ArraySet<>(mRequestedPermissions.length);
- for (int i = 0; i < mRequestedPermissions.length; i++) {
- if (mGrantResults[i] == PERMISSION_GRANTED) {
- grantedPermissionNames.add(mRequestedPermissions[i]);
- }
- }
-
- boolean mightShowNextGroup = true;
- int numGroups = mAppPermissions.getPermissionGroups().size();
- for (int groupNum = 0; groupNum < numGroups; groupNum++) {
- AppPermissionGroup group = mAppPermissions.getPermissionGroups().get(groupNum);
- GroupState groupState = mRequestGrantPermissionGroups.get(group.getName());
-
- if (groupState == null || groupState.mState != GroupState.STATE_UNKNOWN) {
- // Group has already been approved / denied via the UI by the user
- continue;
- }
-
- boolean allAffectedPermissionsOfThisGroupAreGranted = true;
-
- for (int permNum = 0; permNum < groupState.affectedPermissions.length;
- permNum++) {
- if (!grantedPermissionNames.contains(
- groupState.affectedPermissions[permNum])) {
- allAffectedPermissionsOfThisGroupAreGranted = false;
- break;
- }
- }
-
- if (allAffectedPermissionsOfThisGroupAreGranted) {
- groupState.mState = GroupState.STATE_ALLOWED;
-
- if (mightShowNextGroup) {
- // The UI currently displays the first group with
- // mState == STATE_UNKNOWN. So we are switching to next group until we
- // could not allow a group that was still unknown
- if (!showNextPermissionGroupGrantRequest()) {
- setResultAndFinish();
- }
- }
- } else {
- mightShowNextGroup = false;
- }
- }
- }
-
- @Override
- protected void onStart() {
- super.onStart();
-
- getPackageManager().addOnPermissionsChangeListener(mPermissionChangeListener);
-
- updateIfPermissionsWereGranted();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
-
- getPackageManager().removeOnPermissionsChangeListener(mPermissionChangeListener);
- }
-
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -518,16 +435,13 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
}
}
- private void updateAlreadyGrantedPermissions(PackageInfo callingPackageInfo,
- int permissionPolicy) {
+ private void updateDefaultResults(PackageInfo callingPackageInfo, int permissionPolicy) {
final int requestedPermCount = mRequestedPermissions.length;
for (int i = 0; i < requestedPermCount; i++) {
String permission = mRequestedPermissions[i];
-
- if (computePermissionGrantState(callingPackageInfo, permission, permissionPolicy)
- == PERMISSION_GRANTED) {
- mGrantResults[i] = PERMISSION_GRANTED;
- }
+ mGrantResults[i] = callingPackageInfo != null
+ ? computePermissionGrantState(callingPackageInfo, permission, permissionPolicy)
+ : PERMISSION_DENIED;
}
}
@@ -599,19 +513,4 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
mGroup = group;
}
}
-
- private class PermissionChangeListener implements PackageManager.OnPermissionsChangedListener {
- final int mCallingPackageUid;
-
- PermissionChangeListener() throws NameNotFoundException {
- mCallingPackageUid = getPackageManager().getPackageUid(getCallingPackage(), 0);
- }
-
- @Override
- public void onPermissionsChanged(int uid) {
- if (uid == mCallingPackageUid) {
- updateIfPermissionsWereGranted();
- }
- }
- }
}