如何在app目录中附加本地存储的文本文件

时间:2010-07-09 01:53:48

标签: android

我有一个Android应用程序,可以将文本文件直接保存到手机的应用程序安装目录中。我需要允许用户创建一个新的电子邮件,附加这个保存的文本文件。当我开始发送电子邮件的意图时,所有内容都会在Gmail中正确显示,但附件不会被发送。我对堆栈溢出的所有搜索似乎只涉及从SD卡附加图像文件。下面是我使用的代码。如果我做错了,请告诉我。

File myFile = new File(getFilesDir() + "/" + "someFile.txt");
FileOutputStream stream = null;

if( file != null )
{
    steam = openFileOutput("someFile.txt", Context.MODE_WORLD_READABLE);
    stream.write(some_data);

    Uri uri = Uri.fromFile(myFile);

    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.setType("text/plain");
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
    sendIntent.putExtra(Intent.EXTRA_TEXT, email_text);
    sendIntent.putExtra(Intent.EXTRA_STREAM, uri);

    file.close();

    startActivity(Intent.createChooser(sendIntent, "Email:"));
}

我也尝试过sendIntent.setType(“application / octet-stream”);但这并没有什么不同。我不知道为什么文件没有附加并被发送。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

我遇到了完全相同的问题(想要将文本文件附加到Gmail邮件中)。如果你查看Android日志,原因是:

02-28 21:01:28.434: E/Gmail(19673): file:// attachment paths must point to file:///mnt/sdcard. Ignoring attachment file:///data/data/com.stephendnicholas.gmailattach/cache/Test.txt

作为一种变通方法,您可以使用ContentProvider来访问应用程序内部缓存中的文件,以便Gmail可以附加它们。我刚刚写了一篇关于如何做的blog post

希望这有点帮助:)

答案 1 :(得分:4)

我以前见过这个,我能解决的唯一方法是将文件写入SD卡。

值得尝试将文件写入SD卡并附加它,只是为了消除文件位置导致问题。