广播可以有两种处理方式,第一种就在AndroidManifest.xml文件中的<application>节点里进行订阅:
<receiver android:name=".MyBroadcastReciver">
<intent-filter>
<actionandroid:name="com.lenovo.nebula.settings.action.launch"/>
<action android:name="com.lenovo.dll.nebula.launcher.home"/>
</intent-filter>
</receiver>
第二种就是在代码中注册,如:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.lenovo.nebula.settings.action.launch");
intentFilter.addAction("com.lenovo.dll.nebula.launcher.home");
this.registerReceiver(new MyBroadcastReciver(), intentFilter);
(1)在activity的onCreate()方法中添加监听广播:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.os.RemoteControllerService.Broadcast");
this.registerReceiver(new MyBroadcastReciver(), intentFilter);
(2)在activity中添加下面这个类,实现接收广播的 onReceive()方法:
public class MyBroadcastReciver extends BroadcastReceiver {
int id;
String device, event;
@Override
public void onReceive(Context context, Intent intent) {
id = intent.getIntExtra("id", 0);
device = intent.getStringExtra("device");
event = intent.getStringExtra("event");
//处理接收到的信息…….
Toast.makeText(context, "Receive === id="+id+", device="+device+", event="+event, Toast.LENGTH_LONG).show();
}
}
总结:如果广播类定义在该Activity类中,只能在代码中动态添加该广播的action动态注册。单独定义的广播类可以实现上面两种的注册方法。