2 clcurie 11 clcurie_11 于 2013.04.16 11:21 提问

不能读取 SharedPreferences

我用下面的代码创建了一个 SharedPreference:

SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);
        flag = prefs.getBoolean("handle_calls", false);
        if (flag) {
            SharedPreferences.Editor editor = prefs.edit();
            editor.clear();
            editor.putBoolean("checkFlag", true);
            editor.commit();
        }

前几天是可以运行的,现在代码还正常运行,但是当我想读取SmsReceiver 中SharedPreferences类的参数时,不能读取值,默认值读出来也是错误的。
读取SharedPreferences的方法:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    SmsManager sms = SmsManager.getDefault();

    //flag = prefs.getBoolean("handle_calls", false);
    checkFlag = prefs.getBoolean("checkFlag", false);
    checkDecisionFlag = prefs.getBoolean("checkDecisionFlag", false);

checkDecisionFlag可以正常运行,checkFlag执行默认值。
错误出在哪里啊?

1个回答

guoleimail
guoleimail   2013.04.18 18:41
SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);

用THIS ,会默认用包名的,可以使用getSharedPreferences

    prference = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE );  
22.        prference.edit().putString(KEY, mEditText.getText().toString()).commit(); 

读取

try {  
          c = this.createPackageContext("org.ourunix.android.sharepreferencewrite", CONTEXT_IGNORE_SECURITY);  
      } catch (NameNotFoundException e) {  
           // TODO Auto-generated catch block  
           e.printStackTrace();  
       }     

       if (c != null)  
       prference = c.getSharedPreferences(NAME, MODE_PRIVATE);  
suannai0314
suannai0314 帮你编辑了下代码的格式,更多markdown使用见http://ask.csdn.net/pages/markdown
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片