内部与外部存储

问题描述:

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

什么是解决它的最好方法?强制用户拥有外部存储空间还是有其他解决方法?

“什么是解决它的最好方法?强制用户有外部存储或有其他方法来解决这个问题?” ......我不能肯定,但我认为你没有选择,只能强迫用户让外部存储能够通过电子邮件发送附件。

+0

感谢您的回答!我希望有人能够100%肯定地回答我。 –

不能使用MODE_PRIVATE保存到内部存储或电子邮件应用程序将无法访问该文件。你将不得不使用MODE_WORLD_READABLE。

要获得文件的存储位置使用Context.getFilesDir()(http://developer.android.com/reference/android/content/Context.html#getFilesDir%28%29

用户也可以直接在模拟器上安装的电子邮件应用程序测试此的目录。只需下载一个apk并通过adb安装它。