2010-05-27 52 views
4

因此,我已将som数据转换为字符串。虽然我发现如何将SD卡上的东西附加到邮件中,但我无法弄清楚如何直接将字符串转换为邮件附件,而不涉及SD卡。如果它具有重要意义,我已经从数据库中读取了一些数据,将其转换为csv格式,现在想将它作为csv文件附加。将字符串转换为android上的电子邮件附件

干杯,

+0

我不确定如果我理解你的正确,但基本上你想附加一个cvs文件(存储在哪里?)到一个电子邮件? – RoflcoptrException 2010-05-27 13:31:36

+0

我以编程方式创建csv文件。它只创建邮件,然后可以处理。感觉没有必要要求用户为此拥有SD卡。 – pgsandstrom 2010-05-27 14:40:44

+0

我在Android 4.x上遇到同样的问题。如果你找到了解决方案,我很感兴趣。 – Teocali 2013-06-11 10:54:26

回答

-1

使用文件API来创建一个临时文件,然后你可以继续前进,把它作为额外的电子邮件意图这样

emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(csvFile)); 
+0

我曾尝试创建一个文件并将其放入应用程序目录,但gmail拒绝接受该目录中的文件。最有可能防止某些重要应用程序文件可能作为电子邮件附件被盗的安全问题。 – pgsandstrom 2010-05-28 09:37:59

+0

我使用createTempFile(字符串前缀,字符串后缀)保存文件,它对我来说非常好用 – the100rabh 2010-05-29 11:30:45

+0

Hi @ the100rabh,你能举一个例子说明你是如何做到这一点的?谢谢! – Zarah 2010-10-29 08:25:59

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

这是一个在这种情况下,我看到了电子邮件客户端中的“文件”。

但也有2个问题:1。 不`吨我知道如何为这个文件中定义的名称 2.错误occours当我尝试发送的文件,我在另一端得到一个邮件附件不。

UPDATE 2015年5月13日: 我attachent以下错误的邮件应用显示:

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

我认为这意味着我的手机yust缺少能够处理数据URI的内容提供商。 所以我认为,我们要创建的ContentProvider(参见:http://developer.android.com/guide/topics/providers/content-provider-creating.html

和实施

openOutputStream(android.net.Uri) 

返回数据URI的内容。

相关问题