这是主要活动的点击事件。 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");
但是当我试图在这里获得价值时,它会以“不存在”而不是正确的价值出现。请告诉我哪里出错了
答案 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。
只要您不在接收器中执行大任务,就不会有任何问题。