内部存储与外部存储

时间:2013-06-20 04:14:29

标签: android storage external internal

我已经阅读了很多关于将文件保存到内部存储和外部存储的理论,我不知道该怎么做。 我创建了一个带有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();。 内部存储器方法不会发出任何错误,但我不确定文件是否在内部保存。 此外,我认为因为它是在内部保存,邮件应用程序将无法选择它作为附件。 我无法测试这个,因为我的模拟器没有邮件应用程序。我也无法浏览设备上的内容。我也没有拥有没有外部存储设备......

解决此问题的最佳方法是什么?强制用户拥有外部存储还是有其他方法可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

“解决此问题的最佳方法是什么?强制用户拥有外部存储空间还是有其他方法可以解决这个问题?”......我不确定,但我认为您别无选择,只能迫使用户有外部存储空间可以通过电子邮件发送附件。

答案 1 :(得分:0)

您无法使用MODE_PRIVATE保存到内部存储空间,或者电子邮件应用程序将无法访问该文件。你必须使用MODE_WORLD_READABLE。

要获取存储文件的目录,请使用Context.getFilesDir()(http://developer.android.com/reference/android/content/Context.html#getFilesDir%28%29

您还可以在模拟器上安装电子邮件应用以对其进行测试。只需下载apk并通过adb安装即可。