Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Galaxy S3 - taking picture in portrait mode destroys activity

So, this question has been asked in many forms on this forum but none of the answers are helping me. I have a bug which I've only been able to reproduce on the Samsung Galaxy S3.

I want to simply take and store a photo using the phone's camera, but my Activity is being destroyed before I ever hear back from onActivityResult. This ONLY happens when I use the camera in portrait mode, in landscape mode it's fine.

I'm using this code to launch the camera:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, Config.ACTIVITY_TAKE_PHOTO);

In portrait mode, I never see a call to onActivityResult (from the Camera activity), I just see an onDestroy() called in my launching activity. There are no exceptions or errors in the log, and nothing obviously wrong to make it crash.

I've seen posts that recommend adding "android:configChanges="orientation|keyboardHidden"" to the Manifest, and doing lots of other things to manage the orientation change that occurs when using the camera, but nothing has helped so far.

Has anyone else solved this problem?

like image 953
TomBomb Avatar asked Apr 22 '13 18:04

TomBomb


1 Answers

If you are targeting beyond API level 13, Adding

android:configChanges="orientation|keyboardHidden"

to the Manifest will not be enough.

Check this extract from Android documentation

Note: If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.

Hence try adding

android:configChanges="orientation|keyboardHidden|screenSize"

to your Manifest file. This should solve your problem.

like image 105
dishan Avatar answered Oct 02 '22 08:10

dishan