java - 来自内部存储的电子邮件

标签 java android email

在我的应用程序中,我将文件写入内部存储,如 android developer 中所述.然后稍后我希望将我写入的文件通过电子邮件发送到内部存储中。这是我的代码和我得到的错误,任何帮助将不胜感激。

FileOutputStream fos = openFileOutput(xmlFilename, MODE_PRIVATE);
fos.write(xml.getBytes());
fos.close();
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
...
Uri uri = Uri.fromFile(new File(xmlFilename));
intent.putExtra(android.content.Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Send eMail.."));

错误是

file:// attachment path must point to file://mnt/sdcard. Ignoring attachment file://...

最佳答案

我认为您可能在 Android Gmail 客户端中发现了一个错误(或至少是不必要的限制)。我能够解决它,但它让我觉得它过于具体,并且需要更多的工作才能移植:

First CommonsWare 非常正确地需要使文件世界可读:

fos = openFileOutput(xmlFilename, MODE_WORLD_READABLE);

接下来,我们需要解决 Gmail 对/mnt/sdcard(或实现特定等效项?)路径的坚持:

Uri uri = Uri.fromFile(new File("/mnt/sdcard/../.."+getFilesDir()+"/"+xmlFilename));

至少在我修改后的 Gingerbread 设备上,这让我可以通过 Gmail 将附件从私有(private)存储中发送给我自己,并在收到时使用预览按钮查看内容。但我对必须这样做才能使其正常工作感觉不太“好”,谁知道另一个版本的 Gmail 或另一个电子邮件客户端或将外部存储安装在其他地方的电话会发生什么。

关于java - 来自内部存储的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6072895/

相关文章:

android - ImageView 缩放动画稍微切断图像

email - 从 root@servername 更改外发邮件地址 - rackspace sendgrid postfix

java - 尽管设置了用户代理,但来自 Java 应用程序(但不是 Web 浏览器)的 HTTP 403

java - 如何在 Buffer Writer 中创建新行 - Java

android - 如何在 webview 中注入(inject)自定义 css

c# - 从android在主线程外调用webservice

php - 实现 : How to retrieve and send emails for different Gmail accounts?

email - Prometheus 电子邮件警报以显示指标值

java - 为什么我得到的数组元素为 "0"? (见里面的馅饼)

java - Handler.postDelayed 对比 Runnable.run。可以调用 .run 而不是 .postDelayed 吗?