Como passar a imagem da câmera de uma intenção para outra no Android?
-
11-12-2019 - |
Pergunta
Estou tentando enviar a imagem da câmera de uma intenção para outra intenção de exibição.Atualmente estou tentando usar o seguinte método,
Uma vez capturada a imagem
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case CAMERA_RECEIPTREQUEST:
if(resultCode== Activity.RESULT_OK)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
//ImageView jpgView = (ImageView)findViewById(R.id.imageView1);
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
Intent imagepass = new Intent(Activity1.this,Activity2.class);
imagepass.putExtra("imagepass", imagepass);
startActivity(imagepass);
Na segunda atividade
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receiptreview);
//creating view ids
createViewIds();
Bitmap receiptimage = (Bitmap) getIntent().getExtras().getParcelable("imagepass");
receipt.setImageBitmap(receiptimage);
}
Mas mostra erro StackOverFlow,
at java.util.HashMap$EntrySet.iterator(HashMap.java:944)
at android.os.Parcel.writeMapInternal(Parcel.java:486)
at android.os.Bundle.writeToParcel(Bundle.java:1552)
at android.os.Parcel.writeBundle(Parcel.java:502)
at android.content.Intent.writeToParcel(Intent.java:5477)
Não tenho certeza se estou tentando o método errado. Estou procurando algum exemplo ou solução para isso.
Obrigado pela ajuda pessoal.
Solução
usar
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
Intent imagepass = new Intent(Activity1.this,Activity2.class);
imagepass.putExtra("imagepass", receipt );
startActivity(imagepass);
em vez de
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
Intent imagepass = new Intent(Activity1.this,Activity2.class);
imagepass.putExtra("imagepass", imagepass);
startActivity(imagepass);
Você está passando a instância do Intent imagepass em imagepass.putExtra("imagepass", imagepass);
então passe Bitmap
instância em imagepass.putExtra("imagepass", receipt );
EDITAR:
para passar imagens (bitmaps) entre atividades no Android, veja estas postagens:
como você passa imagens (bitmaps) entre atividades do Android usando pacotes?
Como posso passar um objeto Bitmap de uma atividade para outra?
Outras dicas
Pelo que posso ver você passando a própria intenção de ser enviada.Tentar:
imagepass.putExtra("imagepass", receipt);
Pode funcionar, ainda sou novo no Android.
podemos tentar outra maneira de converter a imagem em array de bytes e depois passar o array de bytes através do intent e na atividade que está sendo chamada podemos converter o array de bytes em bitmap