We start native Camera using this code (short variant):
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, NUMBER);
Don't forget Manifest.xml
In OnActivityResult we save information got from our external Camera, but after this in some devices we have this issue:
OnActivityResult
OnResume
OnPause
OnDestroy - there we lose all information from Camera
OnCreate
OnResume
Step 1: Add OnSaveInstanceState and onRestoreInstanceState to your Class.
YourObject mObject = new YourObject();
 
Step 2: Add piece of code to the OnCreate method.
    
OnResume
OnPause
OnSaveInstanceState
OnDestroy
OnCreate - restore Correct Object
OnResume
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, NUMBER);
Don't forget Manifest.xml
<activity
android:name=".YourActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
</activity>In OnActivityResult we save information got from our external Camera, but after this in some devices we have this issue:
OnActivityResult
OnResume
OnPause
OnDestroy - there we lose all information from Camera
OnCreate
OnResume
@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      mObject.setImagePath(....); - for example
}
Solution in two steps:
Step 1: Add OnSaveInstanceState and onRestoreInstanceState to your Class.
YourObject mObject = new YourObject();
@Override
 public void onSaveInstanceState(Bundle savedInstanceState) {
   super.onSaveInstanceState(savedInstanceState);
   if(mObject != null) savedInstanceState.putSerializable(KEY, mObject);
 }
 @Override
 public void onRestoreInstanceState(Bundle savedInstanceState) {
   super.onRestoreInstanceState(savedInstanceState);
   YourObject obj = (YourObject) savedInstanceState.getSerializable(KEY);
   if(obj != null) mObject = obj;
 }
Step 2: Add piece of code to the OnCreate method.
@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
YourObject obj = null;
  try {
obj = (CarsDbModel) savedInstanceState.getSerializable(KEY);
  } catch(NullPointerException e) {
  }
  if(car != null) {
      mObject = car;
}
After this code we will have this queue:
OnPause
OnSaveInstanceState
OnDestroy
OnCreate - restore Correct Object
onRestoreInstanceState
OnResume
 
