让 Preferences API 在 Android 和 PC 上运行

2024-03-21

我想从在 PC 或 Android 手机上运行的草图中保存用户首选项,并尽可能使用标准“Java 方式”中的相同代码。

适合我的目的的理想候选者似乎是 java.util.prefs.Preferences 类。因此,我编写了一个小测试脚本来查看它是否正在处理中:

String prId = "counter";
Preferences prefs = Preferences.userNodeForPackage(this.getClass());
int counter = prefs.getInt(prId, 0);

println(counter);
prefs.putInt(prId, 1+counter);

该程序每次在 PC 上执行时都会输出越来越多的数字。在 Android 上,始终显示默认值 (0)。 要使其在 Android 上运行还需要执行任何其他步骤吗?需要请求权限吗? 是否有其他方法可以在两个平台上保存名称-值对?

观察:“WRITE_EXTERNAL_STORAGE”权限已启用


不幸的是,这是一个已知的 Android 错误:https://code.google.com/p/android/issues/detail?id=22232 https://code.google.com/p/android/issues/detail?id=22232

基本上,应用程序没有生成的路径的写入权限,该路径应该是用户具有写入权限的系统特定位置。

最简单的(跨平台)解决方法可能是使用 java.util.Properties,您可以在其中控制存储位置。

另一种解决方法(如果您由于某种原因与 Preferences API 绑定)可能是提供您自己的 AbstractPreferences 实现(可能由 Android SharedPreferences 支持?),请参阅此帖子:有没有办法在 Windows 下使用 java.util.Preferences 而不使用注册表作为后端? https://stackoverflow.com/questions/208231/is-there-a-way-to-use-java-util-preferences-under-windows-without-it-using-the-r/208289#208289

P.S.:另一个解决方法选项可能是使用显式导出/导入数据Preferences.exportSubtree(OutputStream os) and Preferences.importPreferences(InputStream is)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 Preferences API 在 Android 和 PC 上运行 的相关文章

随机推荐