我目前正在开发一个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)
感谢您提供的任何帮助。
答案 0 :(得分:1)
由于您尝试从服务中读取SharedPreferences,您应该通过
阅读它PreferenceManager.getDefaultSharedPreferences()
而不是
this.getSharedPreferences()
getDefaultSharedPreferences()接受Context - 您的服务作为参数。请参阅文档http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences%28android.content.Context