在我的应用程序中,我将一个文件写入内部存储,如上所述安卓开发者 http://developer.android.com/guide/topics/data/data-storage.html#filesInternal。然后我想通过电子邮件将我写入内部存储的文件发送出去。这是我的代码和我收到的错误,任何帮助将不胜感激。
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:// 附件路径必须指向 file://mnt/sdcard。忽略附件文件://...
我认为您可能在 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 将私人存储中的附件发送给自己,并在收到附件时使用预览按钮查看内容。但我对必须这样做才能使其正常工作感到不太“好”,谁知道另一个版本的 Gmail 或另一个电子邮件客户端或在其他地方安装外部存储的手机会发生什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)