我已经阅读了太多关于将文件保存到内部存储和外部存储的理论,以至于我不知道该怎么做。我创建了一个包含droidtext的PDF文件,希望将其作为电子邮件应用程序的附件发送出去。这没问题。然而,我在这方面取得了成功。我只能用外部存储器来做。所以,我创建了一个PDF,用Environment.getExternalStorageDirectory().getAbsolutePath()把它放到外部存储器中。但是,如果没有可用的外部存储,我想将PDF保存在内部存储上。到目前为止,我是这样做的:外部(完美工作):
pdf = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + java.io.File.separator + fileName);
PdfWriter.getInstance(document, new FileOutputStream(pdf));内部存储:
pdf = new File(fileName);
PdfWriter.getInstance(document, openFileOutput(fileName, MODE_PRIVATE));都有Document document = new Document();。内部内存方法不会产生任何错误,但我不确定文件是否在内部保存。此外,我认为因为它是在内部保存的,邮件应用程序将无法选择它作为附件。我不能测试它,因为我的模拟器没有邮件应用程序。我也不能浏览设备上的内容。我也不拥有没有外部存储的设备...
解决这个问题的最好方法是什么?强制用户拥有外部存储,或者有其他方法来解决这个问题吗?
发布于 2013-06-20 12:46:46
“解决这个问题的最好方法是什么?强制用户使用外部存储,还是有其他方法来解决这个问题?”……我不确定,但我认为您别无选择,只能强制用户使用外部存储才能通过电子邮件发送附件。
发布于 2013-06-22 12:39:09
你不能使用MODE_PRIVATE保存到内部存储,否则电子邮件应用将无法访问该文件。你必须使用MODE_WORLD_READABLE。
要获取存储文件的目录,请使用Context.getFilesDir() (http://developer.android.com/reference/android/content/Context.html#getFilesDir%28%29)
您也可以在模拟器上安装一个电子邮件应用程序来测试这一点。只需下载一个apk并通过adb安装即可。
https://stackoverflow.com/questions/17205156
复制相似问题