除了接受用户发送的广播之外,BroadcastReceiver还有一个重要的用途:接收系统广播。如果应用需要在系统特定时刻执行某些操作,就可以通过监听系统广播来实现。Android的大量系统事件都会对外发送标准广播。下面是Android常见的广播Action常量(具体请参考API文档中关于Intent的说明)。
下面这个小程序可以监听系统开机,并自动启动某个Service,例如监听用户来电、监听用户短信、拦截黑名单电话等。具体Service应用本程序中未给出。
监听开机的BroadcastReceiver:
package com.lovo.receiver;
import com.lovo.service.LaunchService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class LaunchReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "开机啦!!!", Toast.LENGTH_LONG).show();
Intent serviceIntent = new Intent(context, LaunchService.class);
// 启动指定的Service
context.startService(serviceIntent);
}
}
配置该BroadcastReceiver:
<receiver android:name="com.lovo.receiver.LaunchReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
这样系统开机后,该LaunchReceiver就可以接受到广播了,并同时启动Service,Service的具体实现在此省略。
另外,监听系统开机需要如下权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>