BroadcastReceiver主要用途为消息接收,接下来以获取电池电量为例进行下描述。
首先,创建MyPowerBR继承自BroadcastReceiver用于电池电量消息的获取。之后重写onReceive方法,在onReceive方法中过滤消息,选择出电池电量的消息。
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
//获取当前电量,没有收到则返回0
int level = intent.getIntExtra("level", 0);
//电量的总刻度<span style="font-size: 9pt; font-family: 宋体;">,没有收到则返回100</span>
int scale = intent.getIntExtra("scale", 100);
powerInterface.updateUI(level,scale);
}
}
之后需要在Activity中动态注册
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注册广播接受者
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
//创建广播接受者对象
MyPowerBR batteryReceiver = new MyPowerBR();
registerReceiver(batteryReceiver, intentFilter); //动态注册
batteryReceiver.setPowerInterface(this); //设置接口
}
当然还要在Manifest文件中添加啦~~
<span style="white-space:pre"> </span><receiver android:name=".MyPowerBR"/>
此时在onReceive中已经能接收到电池的电量消息了。接下来还有一个问题:如何将接收到的消息传递至Activity中?
我选用了接口来解决这一问题。
在MyPowerBR中创建接口PowerInterface 并定义方法updateUI;在onReceive函数中调用updateUI方法把数据写入,之后再Activity中实现这一接口即可~~~
源文件在这里