尝试测试一个简单的应用程序,该应用程序将从图库中获取图像并将其作为电子邮件的附件传递,我已完成以下操作:
使用意图
通过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);
}
}
}
提交按钮上的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字段静态化,使其可以在任何地方访问,不确定这是否是问题所在的地方。无论如何,没有进一步的... ...这个代码不会将图像作为意图传送到电子邮件应用程序并发送它,而是整个事情发生好像没有选择任何东西。我错过了什么?
答案 0 :(得分:0)
不要用uri构建uri。
intent.putExtra(Intent.EXTRA_STREAM, uri);
但请改用原来的uri:
intent.putExtra(Intent.EXTRA_STREAM, data.getData());