2011-04-14 55 views
3

我正在创建一个文件到内部存储(/ data/data/package_name/myfile_name),我想发送该文件的附件,但我得到一个空白文件在附件尽管我从文件资源管理器中检查了该文件,但该文件在相同位置存在并且不是空的)。无法添加文件从内部存储作为电子邮件附件

当我使用外部存储器时(我正在获取附件中的实际文件)时运行正常的代码。有没有限制,我们无法发送文件存在于内部存储?或者我缺少其他步骤?

回答

5

我假设你试图发送文件作为电子邮件附件使用意图。

该文件为空的原因是电子邮件应用无法访问/data/data/package_name/myfile_name中的文件,这是由于Android安全模式(该目录对您的应用是私有的)。

为了添加文件作为附件,您需要将它写入公共存储(如SD卡),以便电子邮件应用程序可以访问它。

+0

这是唯一的方法吗?我无法直接将其附加到内部存储的电子邮件? – Snake 2013-09-07 05:14:25

1

您如何知道文件存在于您感兴趣的路径中?你可以在应用程序将它保存在那里后用DDMS或ADB查看它吗?你用什么代码来保存/读取文件?我可能能够提供有关该信息的更具体的帮助。

用于获取任何给定设备上的内部存储目录的方法是Context.getFilesDir()。要创建一个名为“MYFILE.DAT”文件的引用,例如:

File myFile = new File(getFilesDir(),"myfile.dat"); 

假设你从活动或其他上下文中调用的代码。为了把这个文件附加到电子邮件中,你会路过一个Uri到该位置作为一个额外的,所以我们的是创作添加到例如:

File myFile = new File(getFilesDir(),"myfile.dat"); 
Uri fileUri = Uri.fromFile(myFile); 

这一切都是假设文件被正确保存首先进入内部存储。

希望有助于!

+0

我没有再次获取该文件。 – 2011-04-23 03:40:59

相关问题