Android的广播功能Broadcast的应用

我们在接收短信和电话时,手机通常要进行信息传输,这里用到的就是广播,广播在手机传输信息时用的特别广泛,我们可以通过广播来监听短信,电量或者信号等。

应用Broadcast主要是分为两步,第一步是发送广播,这里用到的是sendBroadcast,第二步是接收广播,这里用到的是onReceive()方法,这里就详细讲一下。

首先我们在主Activity里面要发送广播,这里的Intent表示把发送的信息和过滤的对象放在Intent对象里面,方便接收广播时处理。

public class MainActivity extends Activity implements OnClickListener{

private final static String MY_ACTION="com.example.mybroadcast.ACTION";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
Intent intent=new Intent(MY_ACTION);
intent.putExtra("data", "你发送了广播...");
sendBroadcast(intent);//发送普通广播
break;
default:
break;
}
}

}


然后我们自定义一个接收广播的类MyReceiver ,它要继承BroadcastReceiver ,然后重写onReceive方法接收广播,若是发过来的信息与IntentFilter一致,则把Intent对象里的数据取出来即可。

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
String data=intent.getStringExtra("data");
Toast.makeText(context, data, Toast.LENGTH_LONG).show();
}
}


最后我们要在xml文件里对广播接收进行配置一下,还要配置一下过滤器,指明广播对哪一类的信息进行接收。

<receiver 
            android:name="com.example.mybroadcast.MyReceiver">
            <intent-filter>
                <action android:name="com.example.mybroadcast.ACTION"/>
            </intent-filter>
        </receiver>

还有一种动态注册的方式,使用Java代码实现。但这种方式必须要启动activity才可以,当当前的context销毁时,Broadcast对象也就自动销毁了。

private SmsReceiver receiver;

protected void onStart() {

receiver=new SmsReceiver();
IntentFilter filter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
filter.setPriority(1000);
registerReceiver(receiver, filter)
;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值