可以使用清单文件配置注册
广播一旦发出,系统就会去所有的清单配置文件中寻找,那个广播接收者的action和广播的action是匹配的,如果找到了,就该广播接收者的进程启动起来
可以使用代码注册
需要接受广播接收者时,执行注册代码。不需要时,执行接触注册的代码、
特殊的广播接收者,必须使用代码注册
安卓中有一些广播接收者,必须使用代码注册。清单配置文件是无效的
1,屏幕锁屏和解锁
2,电量改变
下面是用屏幕的锁屏和解锁做的事列,首先在MAIN中启动服务,第二个页面,服务的类中,我们写代码注册广播的逻辑,第三个页面我们
写的是具体要干什么的业务逻辑,锁屏和解锁就写在这里。 也可以替换成其他业务。
public class MainActivity extends Activity
{
private Intent intent;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
intent = new Intent(this ,
RegisterService.class);
}
public void start(View
v){
startService( intent);
}
public void stop(View
v){
stopService(intent);
}
}
---------------------------------------------------------
public class RegisterService extends Service
{
private ScreenReceiver receiver;
@Override
public IBinder
onBind(Intent intent) {
// TODO Auto-generated
method stub
return null ;
}
@Override
public void onCreate()
{
// TODO Auto-generated
method stub
super.onCreate();
//注册广播接收者
//1,创建广播接收者对象
receiver = new ScreenReceiver();
//2,创建intent-filter对象
IntentFilter filter= new IntentFilter();
filter.addAction(Intent. ACTION_SCREEN_OFF);
filter.addAction(Intent. ACTION_SCREEN_ON);
//3,注册广播接收者
registerReceiver( receiver,
filter);
}
@Override
public void onDestroy()
{
// TODO Auto-generated
method stub
super.onDestroy();
//解除注册
unregisterReceiver( receiver);
}
}
-------------------------------------------------
public class ScreenReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context
context, Intent intent) {
// TODO Auto-generated
method stub
String action = intent.getAction();
if(Intent.ACTION_SCREEN_OFF .equals(action)){
System. out.println("屏幕关闭" );
} else if(Intent.ACTION_SCREEN_ON .equals(action)){
System. out.println("屏幕打开" );
}
}
}