首页 > 解决方案 > 保存首选项在 Android 中引发异常

问题描述

我正在尝试使用以下代码在 Android 中保存用户首选项:

import java.util.prefs.Preferences;

class MyClass {
    void save() throws Exception {
        _prefs.put("NAME","VALUE");
        _prefs.flush(); // Throws exception
    }
    private final Preferences _prefs = Preferences.userNodeForPackage(MyClass.class);
}

...但是“flush”调用会产生以下异常:

W/java.util.prefs: Could not lock User prefs.  Unix error code 2.
W/System.err: java.util.prefs.BackingStoreException: Couldn't get file lock.

我猜是权限问题。所以我将以下内容添加到 AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />

但我仍然得到例外。

如何使用 java.util.prefs.Preferences 类在 Android 中保存用户首选项?

标签: javaandroidpreferences

解决方案


阅读一些文档,尤其是警告部分

在 Android 上,与“系统”和“用户”首选项对应的首选项节点存储在应用程序无法访问的文件系统部分中。此外,允许应用程序设置“系统范围”的偏好与 android 的安全模型背道而驰。

而不是Preferences使用SharedPreferences,一些文档在这里


推荐阅读