BroadcastReceiver组件的注册方式可分为两种,一种是静态注册,即提前在AndroidManifest.xml
文件中声明组件;另外一种是动态注册,即在代码中使用registerReceiver()方法注册
BroadcastReceiver,只有当registerReceiver()的代码执行到了才进行注册,取消时则调用
unregisterReceiver()方法。而容易被忽略的是registerReceiver()方法注册的是全局
BroadcastReceiver,在其生命周期里是默认可导出的,如果没有指定权限访问控制,可以被任意
外部应用访问,向其传递Intent来执行特定的功能。因此,动态注册的BroadcastReceive可能导致
拒绝服务攻击、应用数据泄漏或是越权调用等风险。
解决方法: