从广播接收器访问共享首选项

时间:2015-06-19 19:14:26

标签: android broadcastreceiver sharedpreferences

这是主要活动的点击事件。 s3是编辑文本值,我希望在来电到达时在广播接收器中使用。

 public void clicksave(View shilpa)
 {
   SharedPreferences sharedPreferences = getSharedPreferences("my_prefs", MODE_PRIVATE);
   SharedPreferences.Editor editor = sharedPreferences.edit();
   editor.putString("message", s3);
   editor.commit();
}

这就是我在广播接收器中用来访问s3的值:

String pref = PreferenceManager.getDefaultSharedPreferences(context).getString("message", "Does not exist");

但是当我试图在这里获得价值时,它会以“不存在”而不是正确的价值出现。请告诉我哪里出错了

4 个答案:

答案 0 :(得分:0)

可能是因为您使用的是getDefaultSharedPreferences,请尝试使用

SharedPreferences prefs = getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
String yourString = prefs.getString("message", "Doesn't exist");

答案 1 :(得分:0)

最后我得到了解决方案

主要活动:

 SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
   Editor editor = pref.edit();
   editor.putString("message", message);
   editor.commit();

在广播接收器中:

SharedPreferences pref = context.getSharedPreferences("MyPref", context.MODE_PRIVATE); 
        String a=pref.getString("message", null);

答案 2 :(得分:0)

在广播接收器中试试这个

SharedPreferences pref = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE); 

答案 3 :(得分:0)

您可以像这样从广播接收器访问共享的首选项

@Override
public void onReceive(Context arg0, Intent arg1) {
    SharedPreferences prefs = arg0.getSharedPreferences("myPrefs", 
                                                    Context.MODE_PRIVATE);
}

注意

<receiver android:name="MySmsReceiver" android:process=":remote" />

如果您使用的是android:process =“:remote”,则可能必须删除它。此属性导致接收方在调用时在其他/新进程上运行。但是不同进程之间不支持SharedPreferences。

只要您不在接收器中执行大任务,就不会有任何问题。