电子邮件中的 Android 图片附件

标签 android android-camera email-attachments

我必须在用相机拍照后通过电子邮件发送图像。当我打印所需图像的地址时,它会正确打印存储在 filePath 变量中的地址;显示/mnt/sdcard/DCIM/camera/2013-04-2921.33.45.jpg,但是我发送的时候在应用程序中显示附件,但是发送邮件后收件人收不到附件。

我的应用程序的基本结构是:

  1. 在我的应用的第一个屏幕上,用户点击了拍照按钮。
  2. 手机的默认相机应用出现,用户拍照。
  3. 然后要求用户输入他的姓名和电话号码。
  4. 姓名、电话号码和图像必须附加到要发送到预定义地址的电子邮件中。 (gmail 安卓应用程序)
  5. 姓名和电话号码出现在电子邮件正文中。此外,图像显示附件。但是在发送邮件时,收到的邮件没有附件图像。

附件代码如下:

public class INF extends Activity {
String pic,fullPath;

private static final String TAG = "MyActivity";
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.in);
    final EditText et = (EditText)findViewById(R.id.et1);
    final EditText et2 = (EditText)findViewById(R.id.et2);
    Button bt = (Button)findViewById(R.id.bt);

    getLastImageId();


    bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v){
            Intent i = new Intent(Intent.ACTION_SEND);
            i.setType("plain/text");
            i.putExtra(Intent.EXTRA_EMAIL, new String[]{"pravind.india@gmail.com"});
            i.putExtra(Intent.EXTRA_SUBJECT, "My Information");
            i.putExtra(Intent.EXTRA_TEXT, "Name:"+et.getText().toString()+'\n'+"Mobile No."+et2.getText().toString());
            i.putExtra(Intent.EXTRA_STREAM, Uri.parse(fullPath));

            startActivity(Intent.createChooser(i, "send email...."));
        }
    });


}
private int getLastImageId(){
    final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
    final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
    Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
    if(imageCursor.moveToFirst()){
        int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID));
         fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
        Log.d(TAG, "getLastImageId::id " + id);
        Log.d(TAG, "getLastImageId::path " + fullPath);
        imageCursor.close();
        return id;
    }else{
        return 0;
    }
}

}

getLastImageId 将相机拍摄的最后一张图像的路径存储在变量fullPath中。

最佳答案

你的错误是你选择了 text 而不是 octet-stream 这样的 Intent 类型 你必须这样做

setType("application/octet-stream") 

而不是这个

setType("plain/text");

关于电子邮件中的 Android 图片附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16284257/

相关文章:

android - 在相机之间切换,在 Nexus S 上崩溃

android - 如何从 Fragment 中的 onActivityResult 获取结果?

android - 使用 android camera2 API 显示相机提要

android - 在 Android 的电子邮件附件中显示零字节 pdf 文件

javascript - 客户端 JavaScript CSV 文件生成和电子邮件附件

android - 为什么在 Kotlin 中将内部对象传递给 Gson().toJson(object) 时 json 字符串为 null?

Android-无法将支持库添加到项目

android - 在 Android 中集成 paypal 时出错?

android - SendEvent 数据显示在 Google Analytics 仪表板中的哪个报告中?

java - Json 文件未附加到 android 的电子邮件