我制作了一个程序,我在data/data/mypackagename/
目录中创建了一个文件。从那里我尝试将文件附加到电子邮件并发送。
发生的问题是在将电子邮件作为附件发送时出现文件,但收到邮件时从未收到附件。
我相信当URI在代码中解析文件时会出现一些问题:
emailintent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+outFileName));
我的问题是我可以访问手机中私人文件夹的数据,还是应该总是把它放在SD卡内。
如果我把我正在制作的文件放在SD卡中,附件问题是否会消失?
答案 0 :(得分:1)
我的问题是我可以访问手机中根文件夹的数据,还是应该总是把它放在SD卡中。
您的应用程序可以访问应用程序本地数据存储中的数据 - getFilesDir()
返回的目录。
但是,您没有编写电子邮件程序。电子邮件程序是由其他人编写的,您正在其他应用程序中启动活动。电子邮件程序无权读取 应用程序的数据存储中的文件。
您需要像其他人建议的那样将文件保留在外部存储上,或者使用以openFileOutput()
作为参数的MODE_WORLD_READABLE
版本,因此您有一个其他文件应用程序(如电子邮件程序)可以阅读。
outFileName如下/data/data/com.company.NauticDates/attachment.ics
我当然希望不是。那应该是/data/data/com.company.NauticDates/files/attachment.ics
。请不要在应用程序中硬连线。请使用适当的方法获取目录供您使用,例如getFilesDir()
或openFileOutput()
将文件放入应用程序本地文件存储区。
答案 1 :(得分:0)
您可以将文件放在assets文件夹中。你可以使用以下代码阅读文件
InputStream myInput = context.getAssets().open("filename");
由于 迪帕克