diff options
author | zafir <zafir@google.com> | 2015-07-15 01:14:10 -0700 |
---|---|---|
committer | Alan Newberger <alann@google.com> | 2015-07-17 13:13:35 -0700 |
commit | ac0e2425e77a9b69e76d2f31876798825ea44584 (patch) | |
tree | 86a8dda8ce875dfe047e248d2dd853743d6108e7 /src | |
parent | dd334be92c5513a06c809ee3ea25e411dfad0589 (diff) | |
download | android_packages_apps_Camera2-ac0e2425e77a9b69e76d2f31876798825ea44584.tar.gz android_packages_apps_Camera2-ac0e2425e77a9b69e76d2f31876798825ea44584.tar.bz2 android_packages_apps_Camera2-ac0e2425e77a9b69e76d2f31876798825ea44584.zip |
Fixes to M permissions.
Previously, we called PermissionsActivity with startActivityForResult().
However, this creates race conditions as we check for permissions
and the CameraActivity continues to operate. Now, we end CameraActivity
and launch a new instance upon successful permissions resolution.
We can also put the preload filmstrip logic back in its original
place in onCreate. The checks for permissions happen in both
onCreate and onResume.
Bug: 22442745, 22478144, 22497152
Change-Id: I82e9125a46581db44aa61d4ee94aec5a820e9df0
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/CameraActivity.java | 24 | ||||
-rw-r--r-- | src/com/android/camera/PermissionsActivity.java | 5 |
2 files changed, 13 insertions, 16 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 1897b289b..3997705b3 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -1440,6 +1440,12 @@ public class CameraActivity extends QuickActivity mFeatureConfig = OneCameraFeatureConfigCreator.createDefault(getContentResolver(), getServices().getMemoryManager()); mFatalErrorHandler = new FatalErrorHandlerImpl(this); + checkPermissions(); + if (!mHasCriticalPermissions) { + Log.v(TAG, "onCreate: Missing critical permissions."); + finish(); + return; + } profile.mark(); if (!Glide.isSetup()) { Context context = getAndroidContext(); @@ -1621,6 +1627,8 @@ public class CameraActivity extends QuickActivity mCurrentModule.init(this, isSecureCamera(), isCaptureIntent()); profile.mark("Init CurrentModule"); + preloadFilmstripItems(); + setupNfcBeamPush(); mLocalImagesObserver = new FilmstripContentObserver(); @@ -1850,7 +1858,8 @@ public class CameraActivity extends QuickActivity mPaused = false; checkPermissions(); if (!mHasCriticalPermissions) { - Log.v(TAG, "Missing critical permissions."); + Log.v(TAG, "onResume: Missing critical permissions."); + finish(); return; } if (!mSecureCamera) { @@ -1897,18 +1906,8 @@ public class CameraActivity extends QuickActivity !mSettingsManager.getBoolean(SettingsManager.SCOPE_GLOBAL, Keys.KEY_HAS_SEEN_PERMISSIONS_DIALOGS)) || !mHasCriticalPermissions) { Intent intent = new Intent(this, PermissionsActivity.class); - startActivityForResult(intent, PERMISSIONS_ACTIVITY_REQUEST_CODE); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - // Close the app if critical permissions are missing. - if (requestCode == PERMISSIONS_ACTIVITY_REQUEST_CODE && resultCode == PERMISSIONS_RESULT_CODE_FAILED) { + startActivity(intent); finish(); - } else if (requestCode == PERMISSIONS_ACTIVITY_REQUEST_CODE && resultCode == PERMISSIONS_RESULT_CODE_OK) { - mHasCriticalPermissions = true; } } @@ -1964,7 +1963,6 @@ public class CameraActivity extends QuickActivity Profile profile = mProfiler.create("CameraActivity.resume").start(); CameraPerformanceTracker.onEvent(CameraPerformanceTracker.ACTIVITY_RESUME); Log.v(TAG, "Build info: " + Build.DISPLAY); - preloadFilmstripItems(); updateStorageSpaceAndHint(null); mLastLayoutOrientation = getResources().getConfiguration().orientation; diff --git a/src/com/android/camera/PermissionsActivity.java b/src/com/android/camera/PermissionsActivity.java index 9d2708fd0..a3981ef0f 100644 --- a/src/com/android/camera/PermissionsActivity.java +++ b/src/com/android/camera/PermissionsActivity.java @@ -214,7 +214,8 @@ public class PermissionsActivity extends QuickActivity { } private void handlePermissionsSuccess() { - setResult(RESULT_CODE_OK, null); + Intent intent = new Intent(this, CameraActivity.class); + startActivity(intent); finish(); } @@ -226,7 +227,6 @@ public class PermissionsActivity extends QuickActivity { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { - setResult(RESULT_CODE_FAILED, null); finish(); } return true; @@ -236,7 +236,6 @@ public class PermissionsActivity extends QuickActivity { new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - setResult(RESULT_CODE_FAILED, null); finish(); } }) |