我知道之前曾问过这个问题的变体 trying-to-attach-a-file-from-sd-card-to-email 但提供的解决方案,即重新启动似乎不适合我。我看到很多小组发帖都支持这个问题。我只能假设链接到问题的OP进行了一些其他更改,可能是允许其代码工作的清单。
我看到的行为是电子邮件意图处理来自SD卡的jpeg的附件,但将其作为0长度文件处理,在发送时将其丢弃。我已经尝试过将setType作为jpeg / image和image / jpeg,因为我看到它表达了两种方式。
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("jpeg/image");
sendIntent.putExtra(Intent.EXTRA_EMAIL, "me@gmail.com");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, R.string.email_subjectStart +
mWhatYouSpotted.getSelectedItem().toString() +
R.string.email_subjectEnd);
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/"+ sPhotoFileName));
sendIntent.putExtra(Intent.EXTRA_TEXT, sEmailBody);
startActivity(Intent.createChooser(sendIntent, "Email:"));
这是我上次测试时得到的adb logcat:
V / DumbDumpersMain(3972):sPhotoUri = file://sdcard/DumbDumpers/DumbDumper.jpg I / ActivityManager(56):开始活动:Intent {action = android.intent.action.CHOOSER comp = {android / com .android.internal.app.ChooserActivity}(有额外内容)} I / ActivityManager(56):开始活动:Intent {action = android.intent.action.SEND type = jpeg / image flags = 0x3000000 comp = {com.google。 android.gm/com.google.android.gm.ComposeActivityGmail}(有附加内容)} I / ActivityManager(56):开始活动:Intent {action = android.intent.action.SEND type = jpeg / image flags = 0x2800000 comp = {com.google.android.gm/com.google.android.gm.ComposeActivity}(有额外内容)} D / gmail-ls(120):MailProvider.query:content:// gmail-ls / labels / me @ gmail .com(null,null)D / Gmail(2507):URI FOUND:file://sdcard/DumbDumpers/DumbDumper.jpg
我一直在打击这一个超过一个星期,现在还无法确定是什么问题。有什么想法吗?
答案 0 :(得分:7)
在发布之前应该在这里做更多的搜索; problem sending an email with an attachment programmatically为我解决了这个问题。我只有file://sdcard/DumbDumpers/DumbDumper.jpg
,看起来我已经成功地附加了图像。您需要额外的/
才能使其正常运行:
file:///sdcard/DumbDumpers/DumbDumper.jpg
^
答案 1 :(得分:4)
您的意图类型错误。它应该是
sendIntent.setType("image/jpg");