从 android 应用程序发送带附件的电子邮件过去可以工作,现在不行,不知道发生了啥变化

Posted

技术标签:

【中文标题】从 android 应用程序发送带附件的电子邮件过去可以工作,现在不行,不知道发生了啥变化【英文标题】:Sending email with attachment from android app used to work, now does not, no idea what changed从 android 应用程序发送带附件的电子邮件过去可以工作,现在不行,不知道发生了什么变化 【发布时间】:2016-01-03 15:14:37 【问题描述】:

我有一个 2 年以上的应用程序,我刚刚对其进行了一些小改动,但我似乎已经破坏了从该应用程序发送带有文件附件的电子邮件的能力,该应用程序曾经可以工作......这是代码,它没变……

File path = new File(G.FilePath + "/" + ContextMenuFileName);
String subject = D.OTDRNAME + " OTDR Trace File: \"" + ContextMenuFileName + "\"";
String message = "This e-mail was sent from the " + D.APPNAME + " android application.";
Uri URI = Uri.parse("file://" + path.getPath());

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("application/octet-stream"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, message);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_STREAM, URI);             
startActivity(Intent.createChooser(emailIntent, "Select E-Mail Application"));
return true;

使用该应用程序时,它会要求我使用该应用程序来发送电子邮件(根据 Intent.createChooser() 调用),我选择 gmail,然后 gmail 应用程序启动时填写了邮件的主题和正文并带有一个显示文件附件的符号......所以gmail应用程序显示文件附件......但无论我将电子邮件发送到附件的何处,都不会出现在接收端。

这是 emailIntent 详细信息的屏幕截图,显示了调用 startActivity() 之前正在使用的 URI 字符串

http://i.imgur.com/3JQ2Mor.png

【问题讨论】:

'G.FilePath'。你认为我们知道里面有什么? 问题是您从私有实习内存中提供文件,其他应用程序无法访问。 '显示 URI 字符串'。请做。或者告诉。 greenapps:我在调用 startactivity 之前对其进行了编辑以显示意图详细信息的屏幕截图,它显示了 URI 字符串。你知道吗?我认为文件的位置确实发生了变化……我相信它曾经在 SD 卡上。那么问题来了,gmail 应用程序无法访问该文件? 请尽量在您的帖子中说明这一重要信息。 【参考方案1】:

问题是您从私有实习生内存中提供文件,其他应用程序无法访问。

你可以把它留在那里,让它“世界可读”,但这是一项古老的技术。使用 FileProvider 更好地提供文件。

【讨论】:

以上是关于从 android 应用程序发送带附件的电子邮件过去可以工作,现在不行,不知道发生了啥变化的主要内容,如果未能解决你的问题,请参考以下文章

Android 调用系统Email发送带多附件的邮件

用Python实现带附件发送邮件的功能

用Python实现带附件发送邮件的功能

用Python实现带附件发送邮件的功能

用Python实现带附件发送邮件的功能

用Python实现带附件发送邮件的功能