clcurie_11 2013-04-16 03:21 采纳率: 6.7%
浏览 2609

不能读取 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 2013-04-18 10: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);  
    
    评论

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊