无法从内部存储添加文件作为电子邮件附件

问题描述

我正在将文件创建到内部存储(/ data / data / package_name / myfile_name),我想发送带有附件的文件,但是附件中却有一个空白文件(尽管我从文件资源管理器中检查了该文件,但该文件存在并且在同一位置不能为空)。 使用外部存储时,相同的代码运行良好(我在附件中获取了实际文件)。是否存在内部存储中存在的我们无法发送文件的任何限制?还是我想念的其他步骤?     

解决方法

我假设您尝试使用意图将文件作为电子邮件附件发送。 文件为空的原因是,由于Android的安全性模型,电子邮件应用无法访问ѭ0中的文件((1目录对您的应用是私有的)。 为了将文件添加为附件,您需要将其写入公共存储(例如SD卡),以便电子邮件应用可以访问它。     ,您怎么知道文件存在于您感兴趣的路径中?在将应用程序保存到DDMS或ADB之后,可以使用DDMS或ADB对其进行查看吗?您使用什么代码保存/读取文件?我也许可以提供有关该信息的更多具体帮助。 在任何给定设备上获取内部存储目录的方法是“ 2”。例如,创建对名为\“ myfile.dat \”的文件的引用:
File myFile = new File(getFilesDir(),\"myfile.dat\");
假设您是从Activity或其他Context内部调用代码的。为了将此文件附加到电子邮件,您需要额外向该位置传递ѭ4,因此我们将其创建内容添加到示例中:
File myFile = new File(getFilesDir(),\"myfile.dat\");
Uri fileUri = Uri.fromFile(myFile);
所有这些都是首先假设文件已正确保存到内部存储中。 希望对您有所帮助!