通过电子邮件发送图片意图不显示

时间:2017-06-17 16:23:27

标签: android sqlite email

我正在尝试通过我的应用中的数据库通过ACTION_SEND发送电子邮件。一切正常,所有带有用户详细信息的字段都使用html在电子邮件正文中正确格式化。然而,当我需要发送一个图像(使用Android上的标准内置电子邮件客户端)我得到一个吐司显示"无法附加文件"

我搜索并尝试了各种解决方案,但没有一个能帮助我。

所以这就是我所拥有的:

 Intent messageIntent = new Intent(android.content.Intent.ACTION_SEND);

    String aEmailList[] = {"user@example.com", "user1@example.com"};
    messageIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);
    messageIntent.putExtra(Intent.EXTRA_CC, new String[]{"user2@example.com", "user3@example.com"});
    messageIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);

    messageIntent.setType("text/html");
    messageIntent.setType("image/png");
    messageIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
    Log.v(getClass().getSimpleName(), "simageUri=" + Uri.parse("file://"+ image));
    messageIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ image));
    startActivity(messageIntent);
}

现在,image是文件保存在我的数据库中的位置。我尝试过image.getAbsolutePath但是这会导致空指针异常

崩溃

在我的String.xml中,我必须收到电子邮件的正文。

<string
    name="feedbackmessagebody_format">
    <![CDATA[
    <html>
    <head>
   <style>
   table {
  border-collapse: collapse;
   }

    td, th {
    border: 1px solid black;
    padding: 3px;
    }
   </style>
    </head>
   <body>
   <table>
   <col width="300">
  <tr>
  <th>Field</th>
  <th>Description</th>
  </tr>
  <tr>
  <td><b>Image: </b></td>
  <td>%22$s</td>
  </tr>
  </table>

  </body>
  </html>
   ]]></string>

%22 $ s是我在电子邮件正文中的字段数,这是指向

  final ImageView feedbackField19 = (ImageView) findViewById(R.id.imageA);
  String feedback22 = feedbackField19.getDrawable().toString();

不确定我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

    String recepientEmail = ""; // either set to destination email or leave empty
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:" + recepientEmail));
    intent.putExtra(Intent.EXTRA_SUBJECT,"email subject");
    intent.putExtra(Intent.EXTRA_TEXT,message);
    intent.putExtra(Intent.EXTRA_STREAM,filePath);
    startActivity(intent);