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);  
    
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题