diff options
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java index 296a007aa..b9c4a07d9 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java @@ -147,6 +147,8 @@ public class GrantPermissionsActivity extends SettingsActivity private List<GrantPermissionsActivity> mFollowerActivities = new ArrayList<>(); /** Whether this activity has asked another GrantPermissionsActivity to show on its behalf */ private boolean mDelegated; + /** Whether this activity has been triggered by the system */ + private boolean mIsSystemTriggered = false; /** The set result code, or MAX_VALUE if it hasn't been set yet */ private int mResultCode = Integer.MAX_VALUE; /** Package that shall have permissions granted */ @@ -178,6 +180,7 @@ public class GrantPermissionsActivity extends SettingsActivity .getStringArrayExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES); if (PackageManager.ACTION_REQUEST_PERMISSIONS_FOR_OTHER.equals(getIntent().getAction())) { + mIsSystemTriggered = true; mTargetPackage = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME); if (mTargetPackage == null) { Log.e(LOG_TAG, "null EXTRA_PACKAGE_NAME. Must be set for " @@ -213,16 +216,17 @@ public class GrantPermissionsActivity extends SettingsActivity if (!sCurrentGrantRequests.containsKey(mKey)) { sCurrentGrantRequests.put(mKey, this); finishSystemStartedDialogsOnOtherTasksLocked(); - } else if (getCallingPackage() == null) { - // The trampoline doesn't require results. Delegate, and finish. + } else if (mIsSystemTriggered) { + // The system triggered dialog doesn't require results. Delegate, and finish. sCurrentGrantRequests.get(mKey).onNewFollowerActivity(null, mRequestedPermissions); finishAfterTransition(); return; - } else { + } else if (sCurrentGrantRequests.get(mKey).mIsSystemTriggered) { + // Normal permission requests should only merge into the system triggered dialog, + // which has task overlay set mDelegated = true; - sCurrentGrantRequests.get(mKey).onNewFollowerActivity(this, - mRequestedPermissions); + sCurrentGrantRequests.get(mKey).onNewFollowerActivity(this, mRequestedPermissions); } } @@ -793,9 +797,7 @@ public class GrantPermissionsActivity extends SettingsActivity for (Pair<String, Integer> key : sCurrentGrantRequests.keySet()) { if (key.first.equals(mTargetPackage) && key.second != getTaskId()) { GrantPermissionsActivity other = sCurrentGrantRequests.get(key); - if (other.getIntent().getAction() - .equals(PackageManager.ACTION_REQUEST_PERMISSIONS_FOR_OTHER) - && other.mFollowerActivities.isEmpty()) { + if (other.mIsSystemTriggered && other.mFollowerActivities.isEmpty()) { other.finish(); } } |