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 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发