我可以从我的私人文件夹读取内容吗?
我已经制作了一个程序,其中我在data/data/mypackagename/
目录中创建一个文件。从那里我试着将文件附加到电子邮件并发送。我可以从我的私人文件夹读取内容吗?
发生的问题是在将电子邮件作为附件发送时出现的文件,但收到邮件时永远不会收到附件。
我相信,当URI解析文件中的代码中的一些问题正在发生:
emailintent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+outFileName));
我的问题是可以访问私人文件夹的数据,我的手机,或者我应该始终把它里面的SD卡。
如果我把我在SD卡内制作的文件,附件问题会消失吗?
我的问题是可以访问的根文件夹的数据,我的手机,或者我应该始终把它放在SD卡里面读取文件。
您的应用程序可以访问应用程序本地数据存储中的数据 - getFilesDir()
返回的目录。
但是,您没有编写电子邮件程序。电子邮件程序是由其他人编写的,并且您正在另一个应用程序中开始一项活动。该电子邮件程序无权读取您的应用程序的数据存储中的文件。
您需要将外部存储器上的文件保存为其他人所建议的版本,或使用以MODE_WORLD_READABLE
作为参数的openFileOutput()
版本,因此您有一个文件表明其他应用程序(如电子邮件程序) 可以阅读。
outFileName如下/data/data/com.company.NauticDates/attachment.ics
我当然希望不会。那应该是/data/data/com.company.NauticDates/files/attachment.ics
。请不要在你的应用程序中硬连线。请使用适当的方法获取您要使用的目录,例如getFilesDir()
或openFileOutput()
将文件放入应用程序本地文件存储中。
硬连线路径有什么问题?你也可以给我一个关于使用getfilesdir和openfileoutput的想法吗? – user743883 2011-05-21 05:22:33
@ user743883:“硬连线路径有什么问题?” - 假设所有设备上的路径都是相同的,但它们不是。 “你也可以给我一个关于使用getfilesdir和openfileoutput的想法吗?” - 您应该在十秒内找到http://goo.gl/YnQic和http://goo.gl/TkDqi和http://goo.gl/xziPw来搜索开发者文档。 – CommonsWare 2011-05-21 10:40:42
您可以将该文件放在资产文件夹中。您可以使用下面的代码
InputStream myInput = context.getAssets().open("filename");
感谢 迪帕克
海报不是试图从自己的程序中读取文件,而是通过Intent将它传递给不同的程序,所以不太可能直接工作。 – 2014-06-05 16:05:32
outFileName文件的完整路径? – jkhouw1 2011-05-20 11:46:18
yes ... outFileName如下所示/data/data/com.company.NauticDates/attachment.ics – user743883 2011-05-20 12:02:17