Android: send an email with an image from an ImageView

匿名 (未验证) 提交于 2019-12-03 02:15:02

问题:

I'm new here on stackoverflow. I have a little problem with my Android app, expecially with an ImageView that triggers an event on tap. This event opens an email client with some pre-written text and it should attach the image of the Image. I already know that the image should be converted into a bitmap before, then compressed and send it to the email client, but unfortunatly I'm not an Android/Java expert so I can't find how to do that. This is the code of the email method:

new code below

Where I have to replace "String imageURI = null;" with what the email needs as image. Thank you all!

EDIT:

I managed to edit my code to this, that gives no errors:

public void sendMail(ImageView image){     Intent i = new Intent(Intent.ACTION_SEND);     int imageURI = R.drawable.img1;      i.setType("text/plain");     i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"destinatario@globelife.biz"});     i.putExtra(Intent.EXTRA_SUBJECT, "Oggetto");     i.putExtra(Intent.EXTRA_TEXT   , "Globelife");     i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);     i.setType("image/jpeg");     i.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://"+getPackageName()+"/"+imageURI));       try {         startActivity(Intent.createChooser(i, "Send mail..."));     } catch (android.content.ActivityNotFoundException ex) {         Toast.makeText(Test01Activity.this, "Non sono presenti app per l'invio di e-mails.", Toast.LENGTH_SHORT).show();     }  } 

But I need to change "int imageURI = R.drawable.img1;" to "int imageURI = ImageView.src;" or something like that

回答1:

try this

ImageView iv = (ImageView) findViewById(R.id.splashImageView); Drawable d =iv.getBackground(); BitmapDrawable bitDw = ((BitmapDrawable) d); Bitmap bitmap = bitDw.getBitmap(); File  mFile = savebitmap(bitmap); 

and then

   Uri u = null;    u = Uri.fromFile(mFile);     Intent emailIntent = new Intent(Intent.ACTION_SEND);    emailIntent.setType("image/*");    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Hello...");    // + "\n\r" + "\n\r" +    // feed.get(Selectedposition).DETAIL_OBJECT.IMG_URL    emailIntent.putExtra(Intent.EXTRA_TEXT, "Your tsxt here");    emailIntent.putExtra(Intent.EXTRA_STREAM, u);    startActivity(Intent.createChooser(emailIntent, "Send email...")); 

and savebitmap method

    private File savebitmap(Bitmap bmp) {   String extStorageDirectory = Environment.getExternalStorageDirectory().toString();   OutputStream outStream = null;   File file = new File(extStorageDirectory, temp + ".png");   if (file.exists()) {    file.delete();    file = new File(extStorageDirectory, temp + ".png");   }    try {    outStream = new FileOutputStream(file);    bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream);    outStream.flush();    outStream.close();   } catch (Exception e) {    e.printStackTrace();    return null;   }   return file;  } 


回答2:

Intent i = new Intent(Intent.ACTION_SEND); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setType("image/jpg"); i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/Pictures/ image.jpg")); startActivity(i); 


回答3:

Intent intent=new Intent(Intent.ACTION_SEND); String[] recipients={"destinatario@domain.com"}; intent.putExtra(Intent.EXTRA_EMAIL, recipients); intent.putExtra(Intent.EXTRA_SUBJECT, "Oggetto"); intent.putExtra(Intent.EXTRA_TEXT   , "Testo"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setType("image/png"); intent.putExtra(Intent.EXTRA_STREAM,Uri.parse(“file///sdcard/Images/your_image.jpg”));//or you can pass the path of your image startActivity(Intent.createChooser(intent, "Send mail")); 


回答4:

//re move the String imageURI=null;

public void sendMail(ImageView image){     Intent i = new Intent(Intent.ACTION_SEND);  Uri pngImageUri = Uri.parse(image);   i.setType("image/png");//change here with image/png     i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"destinatario@domain.com"});     i.putExtra(Intent.EXTRA_SUBJECT, "Oggetto");     i.putExtra(Intent.EXTRA_TEXT   , "Testo");     i.putExtra(Intent.EXTRA_STREAM, pngImageUri); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!