Question:
Good morning everyone, the question is as follows. I have some basic fields (name, phone etc), and an option to take pictures. I already have the email sending and the take photo button working, I can get the values of all fields and even take the photo, but I want to know how I can attach the photo to this email…
These are the methods to take the photo and save it to the mobile phone memory card.
public void abrirCamera(){
File picsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File imageFile = new File(picsDir, "foto.jpg");
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
startActivity(i);
}
public void takePhoto(View view)
{
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = new File(Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_PICTURES), "Pic.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
startActivityForResult(intent, TAKE_PICTURE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case TAKE_PICTURE:
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = imageUri;
getActivity().getContentResolver().notifyChange(selectedImage, null);
ImageView imageView = (ImageView) getActivity().findViewById(R.id.ImageView);
ContentResolver cr = getActivity().getContentResolver();
Bitmap bitmap;
try {
bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage);
imageView.setImageBitmap(bitmap);
fotoCart.setText("");
//Toast.makeText(getActivity(), selectedImage.toString(), Toast.LENGTH_LONG).show();
} catch (Exception e) {
//Toast.makeText(getActivity(), "Failed to load", Toast.LENGTH_SHORT).show();
Log.e("Camera", e.toString());
}
}
}
Answer:
You will need to create an Intent
by putting your photo's Uri
as EXTRA_STREAM
.
Try something like this:
private void enviaEmail(Uri uriDaSuaFoto) {
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
//Definindo que o conteúdo sera uma imagem
emailIntent.setType("application/image");
//Qual e-mail a ser enviado
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, "algum@email.com");
//Titulo do e-mail
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Titulo");
//Corpo do e-mail
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Corpo do email");
//Aqui você coloca a uri da sua imagem
emailIntent.putExtra(Intent.EXTRA_STREAM, uriDaSuaFoto);
//Criando um dialog para o usuário poder escolher qual aplicação enviar o e-mail
startActivity(Intent.createChooser(emailIntent, "Enviar e-mail com"));
}