【问题标题】:How to attach a text file stored locally in app directory如何附加存储在本地应用程序目录中的文本文件
【发布时间】:2012-02-29 06:24:27
【问题描述】:

我有一个 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");但这并没有什么不同。我不知道为什么文件没有附加并发送出去。

有什么想法吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    我刚刚遇到了完全相同的问题(想将文本文件附加到 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 来告诉你怎么做。

    希望对你有所帮助:)

    【讨论】:

    • 谢谢 stephendnicholas,我会看看你的帖子!
    • +1 因为这是我找到的唯一解决问题的答案(“附件不在 SD”),即使我还没有尝试过你的方法(不知道它是否有效) .我已为您的博文添加了书签。
    【解决方案2】:

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

    值得尝试将文件写入 SD 卡并附加它,如果只是为了消除文件位置作为问题的原因。

    【讨论】:

    • 嗯...这很不幸。我会试一试,看看是否效果更好。谢谢艾尔。如果没有 SD 卡,你会采取什么方法?您是否决定将所有文件数据附加到 Intent 电子邮件的 EXTRA_TEXT 部分?
    • 如果没有卡,我会显示“您需要 SD 卡消息”。我知道这远非理想,但它避免了用户抱怨附件没有作为附件到达的问题以及与他们执行文件相关的问题 -> 保存在他们的邮件客户端中并抱怨他们的其他应用程序无法导入文件(由于邮件标题在文件中)。
    • 再次感谢艾尔。更改我的代码以将文件存储在 SD 卡上。
    猜你喜欢
    • 2019-01-18
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2012-03-28
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多