summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorzafir <zafir@google.com>2015-07-15 01:14:10 -0700
committerAlan Newberger <alann@google.com>2015-07-17 13:13:35 -0700
commitac0e2425e77a9b69e76d2f31876798825ea44584 (patch)
tree86a8dda8ce875dfe047e248d2dd853743d6108e7 /src
parentdd334be92c5513a06c809ee3ea25e411dfad0589 (diff)
downloadandroid_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.java24
-rw-r--r--src/com/android/camera/PermissionsActivity.java5
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();
}
})