从类扩展服务获得共享首选项

时间:2012-10-28 00:10:08

标签: android service sharedpreferences

我目前正在开发一个Android项目,它有一个用户界面来配置后台服务。

我已成功打开并修改了应用程序首选项文件中的值,但我正在尝试在服务类中打开共享首选项文件,但我收到空指针异常。

我正在使用以下代码打开文件

SharedPreferences settings = this.getSharedPreferences("prefs", 0);

然后我使用以下内容访问共享首选项,但是当我调试时,我认为它没有达到这个目的,我认为它在上面的行上失败了。

if (isPowerConnected() && !wakeLock.isHeld() && settings.getBoolean("appEnabled", true))

以下是引发的异常。

10-28 01:02:37.453: E/EnableWakeLock(18665): java.lang.NullPointerException
10-28 01:02:37.453: W/System.err(18665): java.lang.NullPointerException
10-28 01:02:37.453: W/System.err(18665):    at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:153)

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

由于您尝试从服务中读取SharedPreferences,您应该通过

阅读它
PreferenceManager.getDefaultSharedPreferences() 

而不是

this.getSharedPreferences() 

getDefaultSharedPreferences()接受Context - 您的服务作为参数。请参阅文档http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences%28android.content.Context