Android Broadcast Receiver注册

时间:2022-07-05 21:57:14

之前有关 Broadcast Receiver的链

  • 动态注册

    1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onReceive();
class networkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
}
}

2.然后我们创建一个IntentFilter实例,并给他添加一个值,并创建一个networkChangeReceiver实例,调用registerReceiver();方法进行注册,将networkChangeReceiver实例和IntentFilter都传进去.这样我们的广播就实现了.

intentFilter=new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver=new networkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);

3.要注意的是,动态注册的广播接收器一定要取消注册才行,所以我们重写onDestroy();方法,并通过unregisterReceiver();方法来实现.

@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
  • 静态注册(实现开机启动)

    1.我们新建一个广播接收器,新建MyBroadcastReceiver来继承BroadcastReceiver.(这里我们没有使用内部类的形式)
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
}
}

2.我们在AndroidManifest.xml中将这个广播接收器的类名注册进去.

<receiver
android:name="com.example.broadcasttest.MyBroadcastReceiver" >
<intent-filter >
<action android:name="candroid.intent.action.BOOT_COMPLETEN"/>
</intent-filter>
</receiver>

3.静听系统开机广播需要声明权限.

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>