Certo. Olha, o problema é no envio da imagem. Se vc tirar uma foto, ela vai, mas se não tirar a foto e só quiser enviar a imagem do “W” ela não vai. Fecha a aplicação e não dá erro. No outro projeto, o “W” vai, mas nesse não.
XML (MainActivity):
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/texto"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="50dp"
android:background="@color/colorAccent"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/enviar_texto"
style="@android:style/Widget.Button.Inset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/enviar_texto"
android:textColor="@color/colorPrimaryDark"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/texto"/>
<ImageView
android:id="@+id/icone_w"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="50dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/enviar_texto"
app:srcCompat="@drawable/icone_w" />
<TextView
android:id="@+id/tire_a_foto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/tire_a_foto"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@+id/icone_w"
app:layout_constraintStart_toStartOf="@+id/icone_w"
app:layout_constraintTop_toBottomOf="@+id/icone_w"/>
<Button
android:id="@+id/enviar_imagem"
style="@android:style/Widget.Button.Inset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="@string/enviar_imagem"
android:textColor="@color/colorPrimaryDark"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tire_a_foto" />
</androidx.constraintlayout.widget.ConstraintLayout>
XML (PrimeiraActivity)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".PrimeiraActivity">
<TextView
android:id="@+id/texto_recebido"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:text="@string/texto_recebido"
android:textColor="@color/colorPrimaryDark"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/texto"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="30dp"
android:background="@color/colorAccent"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/texto_recebido" />
</androidx.constraintlayout.widget.ConstraintLayout>
XML (SegundaActivity)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SegundaActivity">
<TextView
android:id="@+id/texto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="@string/imagem_recebida"
android:textColor="@color/colorPrimaryDark"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/foto"
android:layout_width="350dp"
android:layout_height="500dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/texto" />
</androidx.constraintlayout.widget.ConstraintLayout>
ACTIVITY (MainActivity)
package estudos.intentsenviodadosimagens;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity{
EditText editText;
ImageView imageView;
String stTexto;
Button btEnviarTexto, btEnviarImagem;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.texto);
imageView = findViewById(R.id.icone_w);
btEnviarTexto = findViewById(R.id.enviar_texto);
btEnviarImagem = findViewById(R.id.enviar_imagem);
// Envia o texto que for digitado no EditText
btEnviarTexto.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
System.out.println("a1");
stTexto = editText.getText().toString();
System.out.println("a2");
Intent intent = new Intent(getApplicationContext(), PrimeiraActivity.class);
System.out.println("a3");
intent.putExtra("envio_texto", stTexto);
System.out.println("a4");
startActivity(intent);
System.out.println("a5");
}
});
// Ao clicar na imageView, ela chama a camera do celular.
imageView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
}
});
btEnviarImagem.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
System.out.println("b1");
Bitmap bmFoto = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
System.out.println("b2");
Intent intent = new Intent(MainActivity.this, SegundaActivity.class);
System.out.println("b3");
intent.putExtra("envio_imagem", bmFoto);
System.out.println("b4");
startActivity(intent);
System.out.println("b5");
}
});
}
// Método que recebe o resultado da Câmera do celular QUANDO "imageView" É CLICADA!
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0 && resultCode == RESULT_OK && data != null){
try{
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
imageView.setImageBitmap(bitmap);// seta a imageView para a foto tirada
}
catch(Exception e){
Toast.makeText(this, R.string.falha, Toast.LENGTH_SHORT).show();
}
}
}
}
ACTIVITY (PrimeiraActivity)
package estudos.intentsenviodadosimagens;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class PrimeiraActivity extends AppCompatActivity{
TextView tvTextoRecebido;
String stIntentTexto;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_primeira);
System.out.println("w1");
tvTextoRecebido = findViewById(R.id.texto);
System.out.println("w2");
stIntentTexto = getIntent().getStringExtra("envio_texto");// recebe o texto que é enviado quando o botão "btEnviarTexto" do MainActivity é clicado
System.out.println("w3");
tvTextoRecebido.setText(stIntentTexto);
System.out.println("w4");
}
}
ACTIVITY (SegundaActivity)
package estudos.intentsenviodadosimagens;
import android.graphics.Bitmap;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.ImageView;
import com.github.chrisbanes.photoview.PhotoView;
public class SegundaActivity extends AppCompatActivity{
Bitmap bitmapIntent;
ImageView imageView;
PhotoView photoView;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_segunda);
System.out.println("y1");
bitmapIntent = getIntent().getParcelableExtra("envio_imagem");// Recebe a imagem que é enviada quando o botão "btEnviarImagem" do MainActivity é clicado
System.out.println("y2");
photoView = findViewById(R.id.foto);
System.out.println("y3");
imageView = new ImageView(this);
System.out.println("y4");
imageView.setImageBitmap(bitmapIntent);
System.out.println("y5");
photoView.setImageDrawable(imageView.getDrawable());
System.out.println("y6");
}
}
Os resultados que tenho quando rodo o app no ENVIO DE TEXTO é o seguinte:
I/System.out: a1
a2
a3
a4
I/System.out: a5
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@7416396
I/System.out: w1
w2
w3
I/System.out: w4
Ou seja, todos os souts foram impressos no RUN tanto os do MainActivity, quanto os da PrimeiraActivity.
Mas o resultado do ENVIO DA IMAGEM é o seguinte:
I/System.out: b1
b2
b3
I/System.out: b4
I/System.out: b5
Ou seja, ele nem realiza a Intent.