Android - 发送带有返回 0KB 大小的图像附件的电子邮件

Posted

技术标签:

【中文标题】Android - 发送带有返回 0KB 大小的图像附件的电子邮件【英文标题】:Android - Send email with image attachment returning 0KB size 【发布时间】:2014-08-14 07:55:44 【问题描述】:

我创建了一个应用程序单击以发送带有图像附件文件的电子邮件,我认为代码工作正常,在我发现附件的图像大小为 0kb 后,当我点击它时,它说“找不到item”,这是我使用的代码

public void SendEmailWithAttachment(final String imageUrl)
    String path = "file:///android_asset".concat(File.separator).concat(getString(R.string.sa_books_directory)).concat(File.separator); // Get the path file from my asset folder

    Intent emailIntent = new Intent(Intent.ACTION_SEND);
    emailIntent.setType("image/jpeg");
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, "");
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "This is subject");
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is email body");

    emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path + "IndividualVillas/pages/" + imageUrl + ".jpg"));

    startActivity(emailIntent);  

我不知道问题出在哪里,我曾尝试更改 setType 但它也无济于事。任何帮助将不胜感激:)

对不起我的英语不好

【问题讨论】:

您的路径很可能不正确。这里的 imageUrl 是什么?它是网络链接吗?您可以发布您正在创建的示例 uri 吗? 嗨@AjitPratapSingh imageUrl 只是一个图像名称` downloadPicture.setOnClickListener(new WebView.OnClickListener() @Override public void onClick(View v) sendEmailWithAttachment("sample_name_of_image"); ); `感谢您的评论:) 【参考方案1】:
    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.setType("image/jpeg");
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
    //emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,body);
    emailIntent.putExtra(Intent.EXTRA_TEXT, html.fromHtml(new StringBuilder()
    .append("I think you'll like this ")
    .append(wineName).append(".")
    .append("<br /><br />Scanned it with the ")
    .append(bottleRating+tastingNote)

    emailIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://"+winePic));

    final PackageManager pm = ShareWineActivity.this.getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
    ResolveInfo best = null;
    for (final ResolveInfo info : matches)
        if (info.activityInfo.packageName.endsWith(".gm")|| info.activityInfo.name.toLowerCase().contains("gmail"))
            best = info;
    if (best != null)
        emailIntent.setClassName(best.activityInfo.packageName,best.activityInfo.name);
    startActivityForResult(emailIntent, 2015);

【讨论】:

嗨,非常感谢您的代码,但我认为它与我的几乎相同(我还没有尝试:D),我正在寻找我的问题所在而不是完成代码,或者如果您认为您的代码有效,您能告诉我我的问题在哪里吗???非常感谢您的帮助 检查你的图片路径,我觉得有问题。 您好,我再次阅读了您的代码,我看到 Uri.parse("file://"+winePic) 带有 2 "//" 我使用了 3 "///" 是不是也有问题???谢谢...我会尝试使用 2 看看会发生什么,谢谢 请在此答案右侧标记,其他人可以帮助。 你按照这个步骤***.com/questions/4447477/…或***.com/questions/5888718/…或***.com/questions/17568088/…【参考方案2】:

路径是否正确?如果您已经仔细检查过,那么:

这里的问题是特权。如果您想让其他应用程序可以访问一些私有文件,那么您可能想要使用这个简单、漂亮和干净的解决方案:https://developer.android.com/reference/android/support/v4/content/FileProvider.html

【讨论】:

是的,路径是正确的,我已经仔细检查过了,文件附加在电子邮件中并且名称显示出来了,但是大小是 0KB,当我点击它时说“无法找到item”,谢谢你的建议,我会努力学习你给我的链接,谢谢哥们:)

以上是关于Android - 发送带有返回 0KB 大小的图像附件的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

麒麟立方体构建成功,但其大小显示为 0 KB

MSSQL数据库ndf文件大小变为0KB数据恢复过程

javaFile的使用:将字符串写出到本地文件,大小0kb的原因

ftp上传的文件大小全是0kb

c++ fstream对象调用write函数后,文件大小为啥还是0KB?

FTPClient下载文件0kb问题