我正在尝试将SharedPreferenceson
的数据从MainActivity
发送到BroadcastReceiver
。
但总是返回null
我尝试了很多代码,但所有代码都返回了null
。
这是我在MainActivity
上的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences shpMobile = getSharedPreferences("text", MODE_PRIVATE);
final String MobileNumber = (shpMobile.getString("MobileDevice", "0"));
Intent inte = new Intent();
inte.setAction("MyBroadcast");
inte.putExtra("Phone", MobileNumber);
sendBroadcast(inte);
这是我的BroadcastReceiver
班级
String phoo1;
@Override
public void onReceive(Context context, Intent intent) {
//updateWidget();
Bundle extras = intent.getExtras();
if (extras != null) {
String phoo1 = (String) extras.get("Phone");//getting null value
Toast.makeText(context, phoo1 +"این شماره انتقال دهنده است", 5000).show();
}
但phoo
是null
怎么了?
答案 0 :(得分:1)
前段时间有过类似的问题。尝试使用intent中的getStringExtra()而不是bundle中的extras.get():
String phoo1 = intent.getStringExtra("Phone");
解决了我的问题。
答案 1 :(得分:0)
Try to replace this code:
Bundle extras = intent.getExtras();
if (extras != null) {
String phoo1 = (String) extras.get("Phone");//getting null value
Toast.makeText(context, phoo1 +"این شماره انتقال دهنده است", 5000).show();
}
With this:
String phoo1 = intent.getStringExtra("Phone") !=null? intent.getStringExtra("Phone"):"";
Toast.makeText(context, phoo1 +"این شماره انتقال دهنده است", 5000).show();
答案 2 :(得分:0)
谢谢大家。 但我不能用这个解决方案获得价值。我在网上搜索了另一种获取价值的方法。 最后,我发现了一个新的闷热。代码如下:(我习惯于Shareperferenced获取BroadcastReceiver中的值)
SharedPreferences prefs = context.getSharedPreferences("text",
Context.MODE_PRIVATE);
final String MobileNumber = (prefs.getString("MobileDevice", null));
此代码适合我并回复我们的Qustion for @Opiatefuchs请求