java - 在 Android 中的演示版和完整版之间共享保存游戏

标签 java android andengine

我目前正在开发一款 Android 游戏,我的目标是创建该游戏的免费/演示版本,以便用户可以尝试。但我还希望演示版中的游戏存档能够自动导入完整版本

我存储在应用程序私有(private)存储中的保存游戏基本上是映射多个Java对象的JSON字符串。用户可以根据需要创建任意数量的“新游戏”,并且为他开始的每个游戏都有一个“自动保存”和一个“手动保存”文件。为了跟踪所有文件,我有一个包含文件名和一些附加信息(如玩家姓名等)的列表。

所以基本上有很多小文件处理保存游戏。这可能不是最优雅的方法,但效果很好。

这是我的问题:假设用户已经在演示版本中开始了游戏(因此演示版本的私有(private)存储中将保存 3 个文件)。 我现在如何从完整版本中访问这些文件?

这两个版本不会有太大不同。尽管演示版有限制,但它们实际上是相同的。但我会使用相同的代码库。

我知道在这个论坛和其他地方有很多关于这个问题的问题,但我无法找到合适的解决方案。我能找到的所有内容都涉及:

  • 将文件存储在全局可读的存储中(例如 SD 卡)或
  • 使用SharedPreferences

但我既不希望用户能够读取保存游戏(甚至更改它 - 因为这可能会搞乱游戏) - 所以没有 SD 卡,我也不能使用 SharedPreferences,因为每个保存游戏都有大约。 200 行代码(许多 Java 对象转换为 JSON)并将所有这些值和对象映射到用于 SharedPreferences 的某种键值结构对我来说似乎是不可能的。

这一切都搞砸了,还是有人有想法?

感谢您抽出宝贵的时间,期待听到您的想法!

  • 克里斯托夫

最佳答案

所以我只看到 2 个解决方案:

第一个是 WorldReadable SharedPreferences。你说,你存储 JsonStrings,所以不需要进一步向下映射它们,如果你可以从你的 json 字符串中创建对象(我喜欢使用 Gson 进行这种工作),你可以简单地存储这些 SharedPreferences 中的字符串。

第二种方法是麻烦 ContentProviders并实现 ContentResolver 接口(interface)。这是我可以想象的对于您的用例来说最安全的方式,但是您必须为其实现很多

关于java - 在 Android 中的演示版和完整版之间共享保存游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765560/

相关文章:

java - Joda Time ,DateTimeFormatter

android - 设备支持但apk只支持armeabi-v7 x86是什么原因?

java - 无法从 Android 连接到 SQL 服务器

android - 消失的可变文本

android - 如何使用 andengine 针对不同的屏幕分辨率运行我的游戏

android - 无法使用 intellij IDEA 12.04 CE 编译引用 AndEngine GLES2 的 android 应用程序

java - 从 GAE/J 调用 SOAP 服务

java - 从 HttpSessionListener 中获取用户名

java - mybatis foreach collection是一个map-parameter中的list

android - 无法解析 : com. google.firebase :firebase-auth:9. 0.0