我见过几个例子,但仍然不明白为什么,当我编辑邮件时,我看到附加的.xml文件,但是当我收到它没有附件!Android发送xml文件不发送附件
这里是我的代码
File f = new File("data/data/xxx/files/xxx.xml");
Boolean b1 = f.exists();
Boolean b2 = f.canRead();
if (b1 && b2) {
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_EMAIL, "");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" +
f.getAbsolutePath()));
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "XXX");
sendIntent.putExtra(Intent.EXTRA_TEXT, R.string.mail_body);
startActivity(Intent.createChooser(sendIntent, "Email:"));
} else {
...
啊,只有一个细节......当我选择该应用发送没有主题或正文中,即使我写putExtra(Intent.EXTRA_SUBJECT)和putExtra( Intent.EXTRA_TEXT),但这是一个细节...
编辑:我只是打击了我的意图:它表示“未缓存”的值的流,如何解决它?
它实际上是正确的道路。而且当我创建文件时,我使用了FileOutputStream fileOS = c.openFileOutput(FILE_NAME,Context.MODE_WORLD_READABLE);我相信,给其他应用程序读取我的应用程序数据的权利,是不是? – Michele
@Michele:“它实际上是正确的道路” - 并非针对所有设备和所有用户。 “我相信,给别人的应用程序读取我的应用程序数据的权利,是不是?” - 这应该。你的'Uri'也是格式不正确的,因为你硬编码了一个路径,然后转过身来搞乱了字符串连接。使用'getFileStreamPath(FILE_NAME)'获取'File',然后使用'Uri.fromFile()'可靠地生成一个指向这个文件的'Uri'。您最好使用'FileProvider'服务,因为您可以将对此文件的读取访问权限限制在此'startActivity()'调用中,而不是让任何人访问该文件。 – CommonsWare
是的,这似乎对我好,我会尝试这种方式:) – Michele