第一种:在androidmanifest.xml中注册。
在配置文件中注册的接收者的特点是即使应用程序已被关闭,该接收者依然可接受它感兴趣的广播,比如手机电池电量的广播接收者,没有必要将某个程序开启。
代码如下:
//模拟拨打电话广播
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//使用intent来传递广播,初始化一个对象
Intent intent = new Intent();
//"android.intent.action.CALL"是标识符,用来识别哪些广播可以接受到我发送的广播消息
intent.setAction("android.intent.action.CALL");
//发送广播
this.sendBroadcast(intent);
}
}
下面是广播接收者,新建一个类,继承BroadcastReceiver:
// 广播接收者
class Secnd_Recevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
// 夜间模式
queryNightModes.nightModes(sp,view);
}
}
发送者发送广播后,广播接收者就可以收到广播,然后就可以在onReceive(Context context, Intent intent)方法中做想要的操作了!
第二种:动态注册。
在Activity中绑定接收者必须依附该应用程序存在,或者一个BroadcastReceiver用于更新UI,就没有必要再程序关闭时接收者还运行,故无需在
AndroidManifest.xml中注册而可以放在Activity中注册。
代码如下:
新建一个类,继承BroadcastReceiver:
// 广播接收者
class Secnd_Recevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
// 夜间模式
queryNightModes.nightModes(sp,view);
}
}
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 注册广播接收者
Secnd_Recevier secnd_Recevier = new Secnd_Recevier();
IntentFilter intentFilter = new IntentFilter("nightMode");
registerReceiver(secnd_Recevier, intentFilter);
}