将变量传递给BroadcastReceiver时返回null

时间:2014-06-20 10:29:55

标签: android broadcastreceiver sharedpreferences transfer

我正在尝试将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();
         }

phoonull 怎么了?

3 个答案:

答案 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请求