我要求我需要将应用生成的文本文件附加到电子邮件编辑器。
我已在我的应用程序私有区域(getFilesDirectory())创建了我的文件。
我将该文件路径的URI附加到电子邮件Intent对象。我能够看到电子邮件编辑器中的附件,但我无法收到附件。
我正在使用此语句将文件附加到intent对象
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(context.getFilesDirectory()+"abc.txt"));
在谷歌搜索后我知道“getFilesDirectory()”只对我的应用程序是私有的,其他应用程序无法访问我的文件(我的情况是它的电子邮件)。
由于许多设备可能没有SD卡,我无法将文件保存在SD卡中。
请让我知道我可以存储文件的位置,以便将文件附加到电子邮件应用程序中。 感谢。
答案 0 :(得分:0)
无法从应用程序区域附加文件,您需要先将其复制到SD卡中(临时或非临时)。如果系统中没有SD卡,则应通知用户。我最近一直在处理这个问题,但我没有找到任何替代方案。
您可以使用以下代码将文件复制到SD卡:
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "\\data\\application.package\\databases\\name";
String backupDBPath = "name";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src;
try {
src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
try {
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
请记住添加以下权限:android:name =“android.permission.WRITE_EXTERNAL_STORAGE”