BroadcastReceiver用于监听被广播的事件(Intent)。BroadcastReceiver有两种注册方法:
(一)在代码中注册:好处是比较灵活,可以用于更新UI。
registerBtn = (Button)findViewById(R.id.button02);
registerBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
receiver = new MyBroadCastReceive();
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_CALL);
MainActivity.this.registerReceiver(receiver, filter);
}
});
解除绑定:
@Override
protected void onDestroy()
{
super.onDestroy();
this.unregisterReceiver(receiver);
}
(二)在Manifest.xml中注册:好处是应用程序被关掉,也可以接受到广播。
<receiver android:name=".MyBroadCastReceive" >
<intent-filter >
<action android:name="android.intent.action.CALL" />
</intent-filter>
</receiver>
发送广播:
sendBdBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
MainActivity.this.sendBroadcast(intent);
}
});
接收广播:
public class MyBroadCastReceive extends BroadcastReceiver
{
public MyBroadCastReceive()
{
Log.e("---","-----");
}
@Override
public void onReceive(Context context, Intent intent)
{
Log.e("onReceive","onRecerve");
}
}
android内置的 Standard Broadcast Actions可以在android.content.Intent中找到。