2

在我们的应用程序中,用户可以下载 PDF 并通过 iOS 上的 InAppBrowser 或 Android 上的本地 PDF 阅读器打开它。为了存储文件,我们使用 Phonegap 的 LocalFileSystem 选项。它运作良好,但问题是,文件存储在 Android 的外部存储中。这会导致一些问题。首先,用户可以访问文件,其次,当我删除应用程序时,文件仍然是持久的。我不明白为什么 Phonegap 不使用内部存储来使其类似于 iOS。

所以这是我的问题:有没有办法使用 Phonegap 将文件存储在内部存储中,我是否遗漏了一些明显的东西,或者我是否必须编写自己的插件来将文件存储在内部存储中?

笔记:

  • 请不要像我可以使用 localStorage 那样的答案。我想使用内部存储。
  • 我使用Phonegap:2.6,可能会降级到2.5.0(您可能已经注意到,本地存储目前在Android 2.6.0 上也无法正常工作-.-)
4

2 回答 2

2

Phonegap 文档通常并没有真正详细介绍。以下是我想添加到 LocalFileSystem 文档中的一些信息:http: //docs.phonegap.com/en/2.6.0/cordova_file_file.md.html#LocalFileSystem

LocalFileSystem.Persistant:

  • Android:使用外部存储。保存到外部存储的文件是世界可读的,并且可以由用户修改或删除。在删除应用程序时,文件仍然是持久的。来源:http: //developer.android.com/guide/topics/data/data-storage.html#filesExternal
  • iOS:LocalFileSystem.Persistant 使用特定于应用程序的内部存储。用户不能修改或删除文件。

LocalFileSystem.Temporary:

  • Android:使用外部缓存目录。保存到外部存储的文件是世界可读的,并且可以由用户修改或删除。**如果用户卸载您的应用程序,这些文件将被自动删除。
  • iOS:与 Persistant 相同的行为。

摘要: 我仍然不知道为什么Phonegap 不使用内部存储来使其类似于iOS。但是,由于我没有注意到 IOS 上的 Persistant 和 Temporary 之间有任何区别,并且在 Android 上卸载应用程序时文件被删除,我建议始终使用 LocalFileSystem.Temporary。

更新:在iOS中,如果你不使用持久化,你的数据可以在内存不足的情况下被操作系统删除

你同意吗?

感谢和抱歉我的英语不好:)

于 2013-04-22T10:01:49.540 回答
2

在 Android 上,该方法

window.requestFileSystem

将检查设备上是否有可用的 SD 卡。如果有,您的根目录将是 SD 卡。如果没有,它将使用

/data/data/{app package name}

我认为您需要在 Android 上指定根目录,以便默认情况下不使用 SD 卡。

这个博客可能对你有用。

于 2013-04-19T12:48:51.060 回答