Android发送Intent将sdcard中的照片附加为0长度文件

我知道这个问题的变体在尝试附加文件从SD卡到电子邮件之前被问到但是提供的解决方案,即重启似乎不适合我。 我看到很多小组发帖都支持这个问题。 我只能假设链接到问题的OP进行了一些其他更改,可能是允许其代码工作的清单。

我看到的行为是电子邮件意图处理来自SD卡的jpeg附件,但处理它作为0长度文件,在发送时被丢弃。 我已经尝试将setType作为jpeg / image和image / jpeg,因为我已经看到它expression了两种方式。

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

我已经对这个问题猛烈抨击了一个多星期了,现在还无法确定是什么问题。 有任何想法吗?

在发布之前应该在这里做更多的搜索; 发送带附件的电子邮件的问题以编程方式为我解决了。 我只有file://sdcard/DumbDumpers/DumbDumper.jpg ,令人讨厌地看起​​来我已成功附加图像。 你需要一个额外/使其工作:

 file:///sdcard/DumbDumpers/DumbDumper.jpg ^ 

你的意图types是错误的。 它应该是

 sendIntent.setType("image/jpg");