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

时间:2009-08-17 16:19:32

标签: android email android-intent

我知道之前曾问过这个问题的变体 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

我一直在打击这一个超过一个星期,现在还无法确定是什么问题。有什么想法吗?

2 个答案:

答案 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");