Skip to content
Snippets Groups Projects
Commit ee46ceeb authored by Aline Bonnet's avatar Aline Bonnet Committed by Alexandre Lision
Browse files

wizard: fix the photo edit


On some devices, the application crashed when we changed the photo in
the account wizard because the Bitmap was too big to be saved.
Now, we save the photo as byte array instead of Bitmap to prevent it.

Tuleap: #1543
Change-Id: I715f799d64c0a527586937f3da2f5d9b590347b3
Reviewed-by: default avatarAlexandre Lision <alexandre.lision@savoirfairelinux.com>
parent a310667a
No related branches found
No related tags found
No related merge requests found
...@@ -32,6 +32,7 @@ import android.content.Intent; ...@@ -32,6 +32,7 @@ import android.content.Intent;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
...@@ -151,7 +152,10 @@ public class AccountWizard extends AppCompatActivity implements Observer<Service ...@@ -151,7 +152,10 @@ public class AccountWizard extends AppCompatActivity implements Observer<Service
} else { } else {
mProfileFragment = (ProfileCreationFragment) getFragmentManager().getFragment(savedInstanceState, PROFILE_TAG); mProfileFragment = (ProfileCreationFragment) getFragmentManager().getFragment(savedInstanceState, PROFILE_TAG);
mFullname = savedInstanceState.getString("mFullname"); mFullname = savedInstanceState.getString("mFullname");
mPhotoProfile = savedInstanceState.getParcelable("mPhotoProfile"); byte[] bytes = savedInstanceState.getByteArray("mPhotoProfile");
if (bytes != null && bytes.length > 0) {
mPhotoProfile = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
mLinkAccount = savedInstanceState.getBoolean("mLinkAccount"); mLinkAccount = savedInstanceState.getBoolean("mLinkAccount");
} }
} }
...@@ -163,7 +167,11 @@ public class AccountWizard extends AppCompatActivity implements Observer<Service ...@@ -163,7 +167,11 @@ public class AccountWizard extends AppCompatActivity implements Observer<Service
getFragmentManager().putFragment(outState, PROFILE_TAG, mProfileFragment); getFragmentManager().putFragment(outState, PROFILE_TAG, mProfileFragment);
} }
outState.putString("mFullname", mFullname); outState.putString("mFullname", mFullname);
outState.putParcelable("mPhotoProfile", mPhotoProfile); if (mPhotoProfile != null) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mPhotoProfile.compress(Bitmap.CompressFormat.PNG, 100, stream);
outState.putByteArray("mPhotoProfile", stream.toByteArray());
}
outState.putBoolean("mLinkAccount", mLinkAccount); outState.putBoolean("mLinkAccount", mLinkAccount);
} }
......
...@@ -31,7 +31,6 @@ import android.os.Bundle; ...@@ -31,7 +31,6 @@ import android.os.Bundle;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
...@@ -41,6 +40,8 @@ import android.widget.EditText; ...@@ -41,6 +40,8 @@ import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import java.io.ByteArrayOutputStream;
import javax.inject.Inject; import javax.inject.Inject;
import butterknife.BindView; import butterknife.BindView;
...@@ -90,7 +91,10 @@ public class ProfileCreationFragment extends Fragment { ...@@ -90,7 +91,10 @@ public class ProfileCreationFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
if (savedInstanceState != null) { if (savedInstanceState != null) {
mSourcePhoto = savedInstanceState.getParcelable(PHOTO_TAG); byte[] bytes = savedInstanceState.getByteArray(PHOTO_TAG);
if (bytes != null && bytes.length > 0) {
mSourcePhoto = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
} }
final View view = inflater.inflate(R.layout.frag_acc_profile_create, parent, false); final View view = inflater.inflate(R.layout.frag_acc_profile_create, parent, false);
...@@ -112,7 +116,11 @@ public class ProfileCreationFragment extends Fragment { ...@@ -112,7 +116,11 @@ public class ProfileCreationFragment extends Fragment {
@Override @Override
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putParcelable(PHOTO_TAG, mSourcePhoto); if (mSourcePhoto != null) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mSourcePhoto.compress(Bitmap.CompressFormat.PNG, 100, stream);
outState.putByteArray(PHOTO_TAG, stream.toByteArray());
}
} }
private void initProfile() { private void initProfile() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment