Android: ¿Cómo enviar una imagen como adjunto de correo electrónico desde la aplicación?
Actualmente estoy intentando crear una aplicación que tome una foto y luego adjunte esa imagen a un correo electrónico que se va a una dirección de correo predeterminada.
Tengo el correo electrónico funcionando y tengo la cámara funcionando. No puedo parecer obtener la imagen que la cámara ha tomado para agregar como un archivo adjunto. Tengo la imagen apareciendo en la aplicación como una especie de vista previa de la imagen que no tengo ningún problema para sacar si es por eso que no va a adjuntar.
- Cargar imagen de contacto en mapa de bits
- Android: crear animaciones a partir de imágenes fijas
- Añadir marca de agua pequeña imagen a gran imagen opencv4android
- Vista de la imagen de Android desde url
- ¿Se puede configurar el fondo de pantalla como fondo?
Cuando se envía el correo se ha creado una imagen pero está dañada y no se abre. Es como si estuviera creando una imagen inexistente. Creo que será un caso de atar la imagen tomada a la parte de creación de adjuntos, pero no tengo ni idea! Si alguien pudiera ayudar, estaría muy agradecido!
Aquí está mi MainActivity
donde se está creando el correo electrónico junto con la cámara:
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore.Images; import android.provider.MediaStore.Images.Media; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; public class EmailActivity extends Activity { Button send; EditText address, subject, emailtext; protected static final int CAMERA_PIC_REQUEST = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.email); send=(Button) findViewById(R.id.emailsendbutton); address=(EditText) findViewById(R.id.emailaddress); subject=(EditText) findViewById(R.id.emailsubject); emailtext=(EditText) findViewById(R.id.emailtext); send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { } File pngDir = new File( Environment.getExternalStorageDirectory(), "Android/data/com.phstudios.jbrefurb/quote"); if (!pngDir.exists()) pngDir.mkdirs(); File pngFile = new File(pngDir, "pic1.png"); Uri pngUri = Uri.fromFile(pngFile); Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("image/png"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{ "[email protected]"}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject.getText()); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailtext.getText()); emailIntent.putExtra(android.content.Intent.EXTRA_STREAM, pngUri); emailIntent.setType("image/png"); EmailActivity.this.startActivity(Intent.createChooser(emailIntent, "Send mail...")); } }); Button camera = (Button) findViewById(R.id.button2); camera.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); ; } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode== 0 && resultCode == Activity.RESULT_OK){ Bitmap x = (Bitmap) data.getExtras().get("data"); ((ImageView)findViewById(R.id.imageView1)).setImageBitmap(x); ContentValues values = new ContentValues(); values.put(Images.Media.TITLE, "title"); values.put(Images.Media.BUCKET_ID, "test"); values.put(Images.Media.DESCRIPTION, "test Image taken"); values.put(Images.Media.MIME_TYPE, "image/png"); Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); OutputStream outstream; try { outstream = getContentResolver().openOutputStream(uri); x.compress(Bitmap.CompressFormat.JPEG, 70, outstream); outstream.close(); } catch (FileNotFoundException e) { // }catch (IOException e){ // } } } }
Espero que sea algo simple que no estoy uniendo entre ellos.
- Al obtener una imagen de la URL de su java.net.UnknownHostException: Host no está resuelto en el dispositivo Android?
- Efecto de tinte en Android
- Sube la imagen de android a java servlet y guárdala
- Generar imagen de código de barras en la aplicación de Android
- Inicio automático de AnimationDrawable
- ¿Qué es android: contentDescription = "@ string / desc" en el xml de ImageView?
- Saber si un archivo es una imagen en Java / Android
- Android: Rotación de la imagen alrededor del centro
import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.support.v4.app.NavUtils; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import android.content.ContentValues; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.net.Uri; import android.provider.MediaStore.Images; import android.provider.MediaStore.Images.Media; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; public class MainActivity extends Activity { Button send; Bitmap thumbnail; File pic; EditText address, subject, emailtext; protected static final int CAMERA_PIC_REQUEST = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); send=(Button) findViewById(R.id.emailsendbutton); address=(EditText) findViewById(R.id.emailaddress); subject=(EditText) findViewById(R.id.emailsubject); emailtext=(EditText) findViewById(R.id.emailtext); Button camera = (Button) findViewById(R.id.button1); camera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0){ Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); } }); send.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0){ Intent i = new Intent(Intent.ACTION_SEND); i.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); i.putExtra(Intent.EXTRA_SUBJECT,"On The Job"); //Log.d("URI@!@#!#!@##!", Uri.fromFile(pic).toString() + " " + pic.exists()); i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(pic)); i.setType("image/png"); startActivity(Intent.createChooser(i,"Share you on the jobing")); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_PIC_REQUEST) { thumbnail = (Bitmap) data.getExtras().get("data"); ImageView image = (ImageView) findViewById(R.id.imageView1); image.setImageBitmap(thumbnail); try { File root = Environment.getExternalStorageDirectory(); if (root.canWrite()){ pic = new File(root, "pic.png"); FileOutputStream out = new FileOutputStream(pic); thumbnail.compress(CompressFormat.PNG, 100, out); out.flush(); out.close(); } } catch (IOException e) { Log.e("BROKEN", "Could not write file " + e.getMessage()); } } }
prueba esto
Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); i.putExtra(Intent.EXTRA_SUBJECT, " report"); i.putExtra(Intent.EXTRA_TEXT , "PFA"); i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(destinationFile));//pngFile startActivity(Intent.createChooser(i, "Send mail..."));
- TarsosDSP y SurfaceView múltiple problema de subprocesamiento
- Android listview dentro de cardview onTouch audiencia conflicto / sensibilidad