summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2015-06-23 12:55:17 -0700
committerDianne Hackborn <hackbod@google.com>2015-06-23 12:55:17 -0700
commit61afdfb556e739256047635f35b8654890d435f1 (patch)
tree1c2a77d8a8be1daaf2e2266f52a587f4ab4aef41 /src
parent6304bd3489621f5433a905a45c2097ef95055b71 (diff)
downloadandroid_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.java25
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();
}