diff options
author | Camera Software Integration <camswint@localhost> | 2016-11-28 21:32:19 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-11-28 21:32:19 -0800 |
commit | 3ef3c67fb0f74c36463fc197c1c79cda46fea453 (patch) | |
tree | 645aec630c3c2b8498d9711aa4b2cb03711abffd /src | |
parent | eba671dc09fd92c345868655f7a20571b09d1e95 (diff) | |
parent | 73016bfd9fb949241737a8e71e535efd01f2e4e6 (diff) | |
download | android_packages_apps_Snap-3ef3c67fb0f74c36463fc197c1c79cda46fea453.tar.gz android_packages_apps_Snap-3ef3c67fb0f74c36463fc197c1c79cda46fea453.tar.bz2 android_packages_apps_Snap-3ef3c67fb0f74c36463fc197c1c79cda46fea453.zip |
Merge "SnapdragonCamera: Fix can`t swap from icon for camera" into camera.lnx.1.0-dev.1.0
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/CameraActivity.java | 84 |
1 files changed, 55 insertions, 29 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 26e7ca933..d3c39793a 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -234,7 +234,6 @@ public class CameraActivity extends Activity private View mPreviewCover; private FrameLayout mPreviewContentLayout; private boolean mPaused = true; - private boolean mHasCriticalPermissions; private boolean mForceReleaseCamera = false; private Uri[] mNfcPushUris = new Uri[1]; @@ -310,7 +309,6 @@ public class CameraActivity extends Activity public void onCameraDisabled(int cameraId) { UsageStatistics.onEvent(UsageStatistics.COMPONENT_CAMERA, UsageStatistics.ACTION_OPEN_FAIL, "security"); - CameraUtil.showErrorAndFinish(CameraActivity.this, R.string.camera_disabled); } @@ -319,27 +317,21 @@ public class CameraActivity extends Activity public void onDeviceOpenFailure(int cameraId) { UsageStatistics.onEvent(UsageStatistics.COMPONENT_CAMERA, UsageStatistics.ACTION_OPEN_FAIL, "open"); - - CameraUtil.showErrorAndFinish(CameraActivity.this, - R.string.cannot_connect_camera); + showOpenCameraErrorDialog(); } @Override public void onReconnectionFailure(CameraManager mgr) { UsageStatistics.onEvent(UsageStatistics.COMPONENT_CAMERA, UsageStatistics.ACTION_OPEN_FAIL, "reconnect"); - - CameraUtil.showErrorAndFinish(CameraActivity.this, - R.string.cannot_connect_camera); + showOpenCameraErrorDialog(); } @Override public void onStartPreviewFailure(int cameraId) { UsageStatistics.onEvent(UsageStatistics.COMPONENT_CAMERA, UsageStatistics.ACTION_START_PREVIEW_FAIL, "startpreview"); - - CameraUtil.showErrorAndFinish(CameraActivity.this, - R.string.cannot_connect_camera); + showOpenCameraErrorDialog(); } }; @@ -1448,11 +1440,6 @@ public class CameraActivity extends Activity @Override public void onCreate(Bundle state) { super.onCreate(state); - if (checkPermissions() || !mHasCriticalPermissions) { - Log.v(TAG, "onCreate: Missing critical permissions."); - finish(); - return; - } // Check if this is in the secure camera mode. Intent intent = getIntent(); String action = intent.getAction(); @@ -1464,8 +1451,6 @@ public class CameraActivity extends Activity mSecureCamera = intent.getBooleanExtra(SECURE_CAMERA_EXTRA, false); } - mCursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null); - if (mSecureCamera) { // Change the window flags so that secure camera can show when locked Window win = getWindow(); @@ -1479,9 +1464,20 @@ public class CameraActivity extends Activity Log.d(TAG, "acquire wake lock"); } win.setAttributes(params); + } + if (mSecureCamera && !hasCriticalPermissions()) { + return; + } + if (isStartRequsetPermission()) { + Log.v(TAG, "onCreate: Missing critical permissions."); + finish(); + return; } + + mCursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + null, null, null, null); GcamHelper.init(getContentResolver()); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); @@ -1677,6 +1673,10 @@ public class CameraActivity extends Activity @Override public void onPause() { + if (mSecureCamera && !hasCriticalPermissions()) { + super.onPause(); + return; + } // Delete photos that are pending deletion performDeletion(); mOrientationListener.disable(); @@ -1725,9 +1725,8 @@ public class CameraActivity extends Activity * Critical permissions are: camera, microphone and storage. The app cannot run without them. * Non-critical permission is location. */ - private boolean checkPermissions() { - boolean requestPermission = false; - + private boolean hasCriticalPermissions() { + boolean hasCriticalPermission = false; if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.RECORD_AUDIO) == @@ -1736,27 +1735,38 @@ public class CameraActivity extends Activity PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { - mHasCriticalPermissions = true; + hasCriticalPermission = true; } else { - mHasCriticalPermissions = false; + hasCriticalPermission = false; } + return hasCriticalPermission; + } + + private boolean isStartRequsetPermission() { + boolean isStartPermissionActivity = false; final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean isRequestShown = prefs.getBoolean(CameraSettings.KEY_REQUEST_PERMISSION, false); - if(!isRequestShown || !mHasCriticalPermissions) { - Log.v(TAG, "Request permission"); + + if(!mSecureCamera && (!isRequestShown || !hasCriticalPermissions())) { + Log.v(TAG, "Start Request Permission"); Intent intent = new Intent(this, PermissionsActivity.class); startActivity(intent); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(CameraSettings.KEY_REQUEST_PERMISSION, true); editor.apply(); - requestPermission = true; - } - return requestPermission; + isStartPermissionActivity = true; + } + return isStartPermissionActivity; } @Override public void onResume() { - if (checkPermissions() || !mHasCriticalPermissions) { + if (mSecureCamera && !hasCriticalPermissions()) { + super.onResume(); + showOpenCameraErrorDialog(); + return; + } + if (isStartRequsetPermission()) { super.onResume(); Log.v(TAG, "onResume: Missing critical permissions."); finish(); @@ -1814,6 +1824,9 @@ public class CameraActivity extends Activity @Override public void onStart() { super.onStart(); + if (mSecureCamera && !hasCriticalPermissions()) { + return; + } bindMediaSaveService(); mPanoramaViewHelper.onStart(); } @@ -1821,6 +1834,9 @@ public class CameraActivity extends Activity @Override protected void onStop() { super.onStop(); + if (mSecureCamera && !hasCriticalPermissions()) { + return; + } mPanoramaViewHelper.onStop(); unbindMediaSaveService(); } @@ -2352,4 +2368,14 @@ public class CameraActivity extends Activity public CameraModule getCurrentModule() { return mCurrentModule; } + + private void showOpenCameraErrorDialog() { + if (!hasCriticalPermissions()) { + CameraUtil.showErrorAndFinish(CameraActivity.this, + R.string.error_permissions); + } else { + CameraUtil.showErrorAndFinish(CameraActivity.this, + R.string.cannot_connect_camera); + } + } } |