From c79bd4d34880c7be662208ddfe35d81559a3459a Mon Sep 17 00:00:00 2001 From: junjiez Date: Fri, 5 Aug 2016 10:59:39 +0800 Subject: SnapdragonCamera: fix invoke camera failture caused by permissions When the other apps want to invoke camera by intent, if the permission needed by camera is not granted, camera will restart and the intent will be lost, so check the permission first before invoke camera with intents Change-Id: I2c403d2cd78453cc8afcda374969dac87a6becf6 CRs-Fixed: 1047924 --- src/com/android/camera/PermissionsActivity.java | 26 +++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src/com/android/camera/PermissionsActivity.java') diff --git a/src/com/android/camera/PermissionsActivity.java b/src/com/android/camera/PermissionsActivity.java index c720d2106..e623be281 100644 --- a/src/com/android/camera/PermissionsActivity.java +++ b/src/com/android/camera/PermissionsActivity.java @@ -33,16 +33,20 @@ public class PermissionsActivity extends Activity { private boolean mFlagHasMicrophonePermission; private boolean mFlagHasStoragePermission; private boolean mCriticalPermissionDenied; + private Intent mIntent; + private boolean mIsReturnResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + mIntent = getIntent(); + mIsReturnResult = false; } @Override protected void onResume() { super.onResume(); - if (!mCriticalPermissionDenied) { + if (!mCriticalPermissionDenied && !mIsReturnResult) { mNumPermissionsToRequest = 0; checkPermissions(); } else { @@ -164,9 +168,16 @@ public class PermissionsActivity extends Activity { } private void handlePermissionsSuccess() { - Intent intent = new Intent(this, CameraActivity.class); - startActivity(intent); - finish(); + if (mIntent != null) { + mIsReturnResult = true; + mIntent.setClass(this, CameraActivity.class); + startActivityForResult(mIntent, 1); + } else { + mIsReturnResult = false; + Intent intent = new Intent(this, CameraActivity.class); + startActivity(intent); + finish(); + } } private void handlePermissionsFailure() { @@ -192,4 +203,11 @@ public class PermissionsActivity extends Activity { }) .show(); } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + setResult(resultCode, data); + finish(); + } } -- cgit v1.2.3