android - 如何附加存储在本地应用程序目录中的文本文件

标签 android

我有一个 Android 应用程序,可以将文本文件直接保存到手机上,位于应用程序的安装目录中。我需要允许用户创建一个新的电子邮件,附加这个保存的文本文件。当我开始发送电子邮件的 Intent 时,所有内容都正确显示在 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");但这并没有什么不同。我不知道为什么文件没有附加和发送。

有什么想法吗?

最佳答案

我刚刚遇到了完全相同的问题(想要将文本文件附加到 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关于如何去做。

希望对您有所帮助:)

关于android - 如何附加存储在本地应用程序目录中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209304/

相关文章:

Android 上传前调整图像大小(重新采样/缩小采样)

android - 如何从 RAM 中完全解析压缩文件?

没有导入类的 Android 5.0 (Lollipop) startService

当使用 OpenCV CameraBridgeViewBase 时,Android 总是在随机时间间隔后重新启动

java - SSL 套接字 - Java 和证书?

android - 对 Android 如何处理 Activity 感到困惑

java - 以编程方式在android中缩放webview

android - 如何以编程方式更改自定义首选项布局的 ImageView ?

android - 将 html Assets 加载到 webview 时出现问题

java - 调用 AuthUI.getInstance().delete() 时 AuthUI 正在删除什么?