带附件的Android电子邮件应用程序不附带自己的附件

时间:2016-11-27 19:49:47

标签: android forms email email-attachments

尝试测试一个简单的应用程序,该应用程序将从图库中获取图像并将其作为电子邮件的附件传递,我已完成以下操作:

使用意图

通过ImageButton访问图库的代码
ivGalerija.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Select content image"), 1);

            }
        });

重写了OnActivityResult方法

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(resultCode == RESULT_OK){

            if(requestCode == 1){
            imageUri = data.getData();
            File root = Environment.getExternalStorageDirectory();
            String pathToMyAttachedFile = imageUri.getPath().toString();
            File file = new File(root, pathToMyAttachedFile);
            if (!file.exists() || !file.canRead()) {
                return;
            }
            uri = Uri.fromFile(file);
        }
    }
}
提交按钮上的 onClick方法可打开电子邮件应用

bSubmit = (Button) findViewById(R.id.bSubmit);
        bSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                etMesto = (EditText) findViewById(R.id.etMesto);
                etUlica = (EditText) findViewById(R.id.etUlica);
                etOpis = (EditText) findViewById(R.id.etOpis);

                Intent intent = null, chooser = null;

                es = (TextView) findViewById(R.id.tvMesto);

                intent = new Intent(Intent.ACTION_SEND);

                intent.setData(Uri.parse("mailto:"));
                String[] to = {"aco1992@gmail.com"};
                intent.putExtra(Intent.EXTRA_EMAIL, to);
                intent.putExtra(Intent.EXTRA_SUBJECT, "Prijava kvara");
                intent.putExtra(Intent.EXTRA_TEXT, "Elektrodistribucija: " + spElektrodistribucija + "\nMesto neovlascene potrosnje: " +
                        etMesto.getText().toString() + "\nUlica i broj: " + etUlica.getText().toString() + "\nOpis: " + etOpis.getText().toString());
                intent.setType("message/rfc822");

                intent.putExtra(Intent.EXTRA_STREAM, uri);
                chooser = Intent.createChooser(intent, "Send email");
                startActivity(chooser);
            }
        });
    }

没有附件,整个工作正常,文本被传递到正确格式化的邮件正文,但没有附件。我已经将Uri字段静态化,使其可以在任何地方访问,不确定这是否是问题所在的地方。无论如何,没有进一步的... ...这个代码不会将图像作为意图传送到电子邮件应用程序并发送它,而是整个事情发生好像没有选择任何东西。我错过了什么?

1 个答案:

答案 0 :(得分:0)

不要用uri构建uri。

intent.putExtra(Intent.EXTRA_STREAM, uri);

但请改用原来的uri:

intent.putExtra(Intent.EXTRA_STREAM, data.getData());