diff options
author | Dianne Hackborn <hackbod@google.com> | 2015-06-23 12:55:17 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2015-06-23 12:55:17 -0700 |
commit | 61afdfb556e739256047635f35b8654890d435f1 (patch) | |
tree | 1c2a77d8a8be1daaf2e2266f52a587f4ab4aef41 /src | |
parent | 6304bd3489621f5433a905a45c2097ef95055b71 (diff) | |
download | android_packages_apps_PackageInstaller-61afdfb556e739256047635f35b8654890d435f1.tar.gz android_packages_apps_PackageInstaller-61afdfb556e739256047635f35b8654890d435f1.tar.bz2 android_packages_apps_PackageInstaller-61afdfb556e739256047635f35b8654890d435f1.zip |
Fix issue #21945272: Crash in Activity.dispatchRequestPermissionsResult
Make sure to send a full result no matter how we finish the activity.
Change-Id: Ic087a354053d0078985c33f6d1c77c9bb694dc62
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index 98773f54..9f8e368e 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -64,6 +64,8 @@ public class GrantPermissionsActivity extends Activity private GrantPermissionsViewHandler mViewHandler; private AppPermissions mAppPermissions; + boolean mResultSet; + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -240,9 +242,9 @@ public class GrantPermissionsActivity extends Activity } @Override - public void onBackPressed() { - setResultAndFinish(); - super.onBackPressed(); + public void finish() { + setResultIfNeeded(RESULT_CANCELED); + super.finish(); } private int computePermissionGrantState(PackageInfo callingPackageInfo, @@ -304,12 +306,19 @@ public class GrantPermissionsActivity extends Activity } } + private void setResultIfNeeded(int resultCode) { + if (!mResultSet) { + mResultSet = true; + logRequestedPermissionGroups(); + Intent result = new Intent(PackageManager.ACTION_REQUEST_PERMISSIONS); + result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, mRequestedPermissions); + result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS, mGrantResults); + setResult(resultCode, result); + } + } + private void setResultAndFinish() { - logRequestedPermissionGroups(); - Intent result = new Intent(PackageManager.ACTION_REQUEST_PERMISSIONS); - result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, mRequestedPermissions); - result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS, mGrantResults); - setResult(RESULT_OK, result); + setResultIfNeeded(RESULT_OK); finish(); } |