将字符串转换为Android电子邮件附件

5

我有一些数据已经转换成字符串。虽然我已经找到了如何将SD卡上的文件附加到邮件中,但我无法想出如何直接将我的字符串转换为邮件附件而不涉及SD卡。如果这很重要的话,我已经从数据库读取了一些数据,将其转换为CSV格式,现在希望将其作为CSV文件附加。

谢谢!


我不确定我是否正确理解了您的意思,但基本上您想要将一个 cvs 文件(存储在哪里?)附加到一封电子邮件中? - RoflcoptrException
我通过编程创建CSV文件。它仅用于发送邮件,然后可以被处理掉。要求用户为此拥有SD卡似乎是不必要的。 - pgsandstrom
我在Android 4.x上遇到了同样的问题。如果你找到了解决方案,我很感兴趣。 - Teocali
2个回答

0

我有同样的问题,我尝试发送一个文件而不将其保存在文件系统中。 我尝试添加一个数据URI流额外参数,像这样:

String fileContent = "File Content";

emailIntent.putExtra(Intent.EXTRA_STREAM, 
  Uri.parse("data://text/plain;base64,"+ 
    _utils.Strings.base64_encode(fileContent)));

我使用自己的类创建Base64内容,但我认为这也可以使用以下链接:http://developer.android.com/reference/android/util/Base64.html

在那种情况下它是成功的,在我的邮件客户端中看到了附加的“文件”。

但有两个问题: 1. 我不知道如何为这个文件定义一个名称 2. 当我尝试发送文件时发生错误,我收到的邮件没有附件。

更新2015-05-13: 我的附件引起了邮件应用程序显示以下错误:

E/Gmail(11511): java.io.FileNotFoundException: No content provider: data://text/plain;base64,

我认为这意味着我的手机缺少一个可以处理数据URI的内容提供者。

所以我觉得我们需要创建一个ContentProvider(请参见:http://developer.android.com/guide/topics/providers/content-provider-creating.html

并实现一个

openOutputStream(android.net.Uri)

返回数据 URI 的内容。


-1
使用文件API创建临时文件,然后您可以将其作为额外内容放入电子邮件意图中,就像这样。
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(csvFile));

我曾尝试创建一个文件并将其放置在应用程序目录中,但Gmail拒绝接受来自该目录的文件。很可能是为了防止某种安全问题,重要的应用程序文件可能会被作为电子邮件附件窃取。 - pgsandstrom
我使用createTempFile(String prefix, String suffix)保存文件,它对我非常有效。 - the100rabh
嗨@the100rabh,你能举个例子说明一下你是如何让这个工作的吗?谢谢! - Zarah
主题是“字符串转电子邮件附件”,问题是“不涉及SD卡”。因此,临时文件不是所需的方式。 - Radon8472

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接