Android Broadcast Receiver注册

之前有关 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"/>
原文地址:https://www.cnblogs.com/stareblankly/p/5076157.html