如何将价值从活动传递给广播接收者?

时间:2014-01-29 05:13:21

标签: android android-broadcast

我正在使用broadcastreceiver开发一个应用程序我从活动接收广播接收器的价值有问题,请告诉我如何从活动向广播接收器发送价值以及如何从活动接收广播接收器的价值,我正在尝试如下代码,但它无法正常工作

我的代码  在活动方面

Intent intent = new Intent("my.action.string");
    //intent.setAction("IncomCallBroadCast");
    intent.putExtra("contact",phNo);
    sendBroadcast(intent);

在广播接收方

 String action = intent.getAction();
    Log.i("Receiver", "Broadcast received: " + action);
    if(action.equals("my.action.string")){
        contact = intent.getExtras().getString("contact");
        Log.e("",contact );
    }
manifest
<action android:name="my.action.string"/> 

4 个答案:

答案 0 :(得分:1)

在主要活动中使用此代码启动广播接收器

Intent intent = new Intent("package.action.string");
intent.putExtra("extra", phoneNo); \\ phoneNo is the sent Number
sendBroadcast(intent);

在广播收发器中使用此代码

public void onReceive(Context context, Intent intent) {
 String action = intent.getAction();

 Log.i("Receiver", "Broadcast received: " + action);

 if(action.equals("package.action.string")){
   String state = intent.getExtras().getString("extra");

  }
}

注意:Donot忘记在清单文件中声明您的广播接收器

<receiver android:name=".SmsReceiver" android:enabled="true">
<intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    <action android:name="package.action.string" />
    <!-- and some more actions if you want -->
</intent-filter>
</receiver>

答案 1 :(得分:0)

更改此行

String action = intent.getAction();
contact = intent.getExtras().getString("contact");

Intent intent = getIntent();
contact = intent.getStringExtra("contact");

答案 2 :(得分:0)

确保phNo的类型为String。如果没有,请在getInt()中使用BroadcastReciever

您可能希望在其他内容中添加String,然后在String中进行检索。 如果phNo变量的类型为int,那么您应该仅以int的形式检索额外值。

答案 3 :(得分:0)

尝试以下方法:

Log.e("i am printing my cotnact " , contact );

并给我一些反馈

希望有助于。