我想将一些照片文件添加到电子邮件意图中。 意图正常开始。
问题:附件未显示,例如在GMail应用程序中。我没有收到任何错误消息。 问题出在哪里?
我已将此代码与此post中的建议一起更改,但我的代码似乎仍无效。
我从照片对象收到的文件路径:file:///storage/emulated/0/Pictures/SMSCloudImages/IMG_20161127_121011.jpg
它应该是一条正确的路径,因为我可以在图库中显示图像。
Uri uri = Uri.parse("mailto:" + "someone@mail.com")
.buildUpon()
.appendQueryParameter("subject", subject)
.appendQueryParameter("body", body)
.build();
List<Photo> photoList = new ArrayList<>();
photoList.addAll(databaseHandler.getPhotos(qReport.getId()));
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
Intent intentPick = new Intent();
intentPick.setAction(Intent.ACTION_PICK_ACTIVITY);
intentPick.putExtra(Intent.EXTRA_TITLE, getResources().getString(R.string.q_report_launch_mail_text));
intentPick.putExtra(Intent.EXTRA_INTENT, emailIntent);
for (Photo photo: photoList) {
intentPick.putExtra(Intent.EXTRA_STREAM, Uri.parse(photo.getName()));
}
this.startActivityForResult(intentPick, REQUEST_CODE_MY_PICK);
答案 0 :(得分:0)
这是我使用的代码:
//how hany picture you want the user to upload
private static final int SELECT_PICTURE = 1;
public void grabImg(){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
}
Uri uri = null;
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
if(resultCode == RESULT_OK){
Uri selectedImage = imageReturnedIntent.getData();
uri = selectedImage;
}
}
//This is triggered on a button click
String subject = Suggest.getText().toString();
String rating = String.valueOf(RateBar.getRating());
String to ="xxxxx@mail.com"; //destination
String message = UserInput.getText().toString();
String body = message;
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{to});
email.putExtra(Intent.EXTRA_SUBJECT, subject);
email.putExtra(Intent.EXTRA_TEXT, body);
email.putExtra(Intent.EXTRA_STREAM, uri);
email.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//need this to prompts email client only
email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Choose an Email client :"));
答案 1 :(得分:0)
请记住向android清单添加正确的权限(读取和写入):
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />