【问题标题】:Internal versus External Storage内部与外部存储
【发布时间】:2013-06-20 04:14:28
【问题描述】:

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

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

【问题讨论】:

    标签: android storage external internal


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答!我希望有人可以 100% 肯定地回答我。
    【解决方案2】:

    您不能使用 MODE_PRIVATE 保存到内部存储,否则电子邮件应用将无法访问该文件。您必须使用 MODE_WORLD_READABLE。

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

    您也可以在模拟器上安装一个电子邮件应用程序来测试它。只需下载一个 apk 并通过 adb 安装即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2016-01-01
      相关资源
      最近更新 更多