在我的应用程序中,我将文件写入内部存储,如 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/