【发布时间】:2014-12-04 12:43:56
【问题描述】:
我的应用程序将数据写入文本文件(在 SD 卡和内部存储器上)。 稍后,该应用程序会将文本文件通过电子邮件发送给人员列表。 我无法让 gmail 附加从内部应用程序文件区域提取的文件。 “原生 Android 邮件”可以毫无问题地从内部或 SD 卡区域附加文件。如果文件来自 SD 卡,Gmail 会附加文件,但如果文件位于内部存储中,则不会附加文件。
// 这会从 SD 发送文件 - 适用于 android 邮件和 gmail
Intent jj=new Intent(android.content.Intent.ACTION_SEND);
String fileName = "file://" + Environment.getExternalStorageDirectory()+"/aFolder/externalfile.txt"
jj.putExtra(Intent.EXTRA_STREAM, Uri.parse(fileName));
jj.setType("text/plain");
Intent chooser = Intent.createChooser(jj , "Select Sender");
startActivity(chooser);
// 这会发送一个内部文件,适用于 android 邮件,但没有使用 gmail 发送附件
Intent jj=new Intent(android.content.Intent.ACTION_SEND);
String fileName = "file://" + getFilesDir().toString() + "/internalfile.txt";
jj.putExtra(Intent.EXTRA_STREAM, Uri.parse(fileName));
jj.setType("text/plain");
Intent chooser = Intent.createChooser(jj , "Select Sender");
startActivity(chooser);
有什么建议吗?
我是否需要以某种方式授予 Gmail 特殊权限?
我的附件都是文本文件 - 由应用程序编写。
内部文件是使用 openFileOutput(myFile,32769)
谢谢 约翰·D
【问题讨论】:
-
Gmail 意图不允许从内部存储发送(放入附件)文件。所以你必须只使用外部存储器:(
-
pankaj - 你能指出任何证实这一点的文件吗?
-
我在 logcat 中收到以下消息:ERROR/Gmail(9147): file:// 附件路径必须指向 file:///mnt/sdcard。忽略附件 file:///data/data/my.package.name/files/myfile.txt 我应该如何解释这个? - 我永远不能将内部存储器文件附加到 GMail 中吗? - 我需要更改权限吗? - 我需要以不同的方式构建我的 URI 吗?
-
同样的问题。我无法将文件附加到 Gmail,但可以使用其他电子邮件客户端。
标签: android