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 大小的图像附件的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
javaFile的使用:将字符串写出到本地文件,大小0kb的原因