Android 内部存储与外部存储

Android 内部存储与外部存储,android,storage,external,internal,Android,Storage,External,Internal,我读过很多关于将文件保存到内部存储和外部存储的理论,我不知道该怎么做了。 我创建了一个带有droidtext的PDF文件,我想在所选的电子邮件应用程序中将其作为附件发送电子邮件。 这没问题。我成功了,但是。。。我只能用外置存储器。 因此,我创建了一个PDF,将其放入外部存储器中,使用Environment.getExternalStorageDirectory().getAbsolutePath()。 但是,如果没有可用的外部存储,我希望将PDF保存在内部存储上。 到目前为止,我是这样做的: 外

我读过很多关于将文件保存到内部存储和外部存储的理论,我不知道该怎么做了。 我创建了一个带有droidtext的PDF文件,我想在所选的电子邮件应用程序中将其作为附件发送电子邮件。 这没问题。我成功了,但是。。。我只能用外置存储器。 因此,我创建了一个PDF,将其放入外部存储器中,使用
Environment.getExternalStorageDirectory().getAbsolutePath()
。 但是,如果没有可用的外部存储,我希望将PDF保存在内部存储上。 到目前为止,我是这样做的: 外部(工作正常):

内部存储:

pdf = new File(fileName);
            PdfWriter.getInstance(document, openFileOutput(fileName, MODE_PRIVATE));
两者都具有
Document Document=new Document()。
内部内存方法不会产生任何错误,但我不确定文件是否保存在内部。
此外,我认为,因为它是内部保存的,邮件应用程序将无法选择它作为附件。
我无法测试,因为我的模拟器没有邮件应用程序。我也不能浏览设备上的内容。我也不拥有没有外部存储器的设备


解决这个问题的最好办法是什么?强制用户使用外部存储或是否有其他方法解决此问题?

解决此问题的最佳方法是什么?强制用户使用外部存储或是否有其他方法解决此问题?…我不确定,但我认为您别无选择,只能强制用户使用外部存储以通过电子邮件发送附件

您不能使用MODE_PRIVATE保存到内部存储,否则电子邮件应用程序将无法访问该文件。您必须使用模式\u WORLD\u READABLE

要获取存储文件的目录,请使用Context.getFilesDir()()


您也可以在emulator上安装电子邮件应用程序来测试这一点。只需下载apk并通过adb安装即可。

谢谢您的回答!我希望有人能百分之百肯定地回答我。
pdf = new File(fileName);
            PdfWriter.getInstance(document, openFileOutput(fileName, MODE_PRIVATE));