android 怎样收到系统发送的广播

要注册接受广播的处理程序, 有两种方式

在AndroidManifest.xml重注册, 比如监听系统的开机广播和屏幕解锁广播

<receiver android:name="com.bestjoy.app.common.update.BootCompletedReceiver" >

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED" />

<action android:name="android.intent.action.USER_PRESENT" />

</intent-filter>

</receiver>

这样, 一旦有定义的action发出来,?BootCompletedReceiver的onReceive方法就会回调了,这样的监听,不需要你的app已经在运行。

2. ?在程序中动态创建监听器, 比如还是解锁广播,

在Activity的onCreate()中生成一个IntentFilter对象

IntentFilter filter=new IntentFilter();

//为IntentFilter添加一个Action

filter.addAction("android.intent.action.USER_PRESENT");

bootCompletedReceiver = new?UserPresentReceiver();

registerReceiver(smsReceiver, filter);

在onDestroy的时候去注册

unregisterReceiver(bootCompletedReceiver);

这样的方式只有在Activity生命周期onCreate()-onDestroy()之间有效。

对于一些特俗的系统级别的广播,即使你按照上面的任何一种方式做了, 也可能监听不到, 这是android 系统做了保护了, 网上查一下就知道了。