2011-05-20 93 views
0

我已经制作了一个程序,其中我在data/data/mypackagename/目录中创建一个文件。从那里我试着将文件附加到电子邮件并发送。我可以从我的私人文件夹读取内容吗?

发生的问题是在将电子邮件作为附件发送时出现的文件,但收到邮件时永远不会收到附件。

我相信,当URI解析文件中的代码中的一些问题正在发生:

emailintent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+outFileName)); 

我的问题是可以访问私人文件夹的数据,我的手机,或者我应该始终把它里面的SD卡。

如果我把我在SD卡内制作的文件,附件问题会消失吗?

+0

outFileName文件的完整路径? – jkhouw1 2011-05-20 11:46:18

+0

yes ... outFileName如下所示/data/data/com.company.NauticDates/attachment.ics – user743883 2011-05-20 12:02:17

回答

1

我的问题是可以访问的根文件夹的数据,我的手机,或者我应该始终把它放在SD卡里面读取文件。

您的应用程序可以访问应用程序本地数据存储中的数据 - getFilesDir()返回的目录。

但是,您没有编写电子邮件程序。电子邮件程序是由其他人编写的,并且您正在另一个应用程序中开始一项活动。该电子邮件程序无权读取您的应用程序的数据存储中的文件

您需要将外部存储器上的文件保存为其他人所建议的版本,或使用以MODE_WORLD_READABLE作为参数的openFileOutput()版本,因此您有一个文件表明其他应用程序(如电子邮件程序) 可以阅读。

outFileName如下/data/data/com.company.NauticDates/attachment.ics

我当然希望不会。那应该是/data/data/com.company.NauticDates/files/attachment.ics。请不要在你的应用程序中硬连线。请使用适当的方法获取您要使用的目录,例如getFilesDir()openFileOutput()将文件放入应用程序本地文件存储中。

+0

硬连线路径有什么问题?你也可以给我一个关于使用getfilesdir和openfileoutput的想法吗? – user743883 2011-05-21 05:22:33

+0

@ user743883:“硬连线路径有什么问题?” - 假设所有设备上的路径都是相同的,但它们不是。 “你也可以给我一个关于使用getfilesdir和openfileoutput的想法吗?” - 您应该在十秒内找到http://goo.gl/YnQic和http://goo.gl/TkDqi和http://goo.gl/xziPw来搜索开发者文档。 – CommonsWare 2011-05-21 10:40:42

0

您可以将该文件放在资产文件夹中。您可以使用下面的代码

InputStream myInput = context.getAssets().open("filename"); 

感谢 迪帕克

+0

海报不是试图从自己的程序中读取文件,而是通过Intent将它传递给不同的程序,所以不太可能直接工作。 – 2014-06-05 16:05:32

相关问题