广播有两种注册方式:动态注册和静态注册(个人感觉静态注册反应稍慢)
1.1 先说静态注册:
定义需要在manifest文件中定义的广播接受者的类
public classmyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0,Intent arg1) {
Stringcontent = arg1.getAction();
Stringcontent1 = (String) arg1.getExtras().get("key");
Toast.makeText(arg0, "注册的广播是:" + content +"内容有:" + content1, Toast.LENGTH_SHORT).show();
}
}
1.2 在AndroidManifest.xml文件中,name为自己定义的广播类继承了BroadcastReceiver的包名,action的name 是广播的动作,如果符合才会触发此广播事件。
<receiver android:name="com.example.broadcast.myBroadcastReceiver" >
<intent-filter>
<action android:name="MY_BROADCAST"/>
</intent-filter>
</receiver>
1.3 最后在代码中发送广播就可以了
Intent intent = new Intent("MY_BROADCAST");
intent.putExtra("key", "可以传值");
sendBroadcast(intent);
2 动态注册
2.1 同静态注册一样,首先定义一个广播接收者的类
public class mineBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Contextcontext, Intent intent) {
String action = intent.getAction();
if("MY_BROADCAST".equals(action)) //判断是否接到电池变换消息
{
Toast.makeText(MainActivity.this, "是这个没错", Toast.LENGTH_SHORT).show();
//处理内容
}
}
}
2.2 然后再代码中注册改广播
IntentFilterintentFilter = new IntentFilter();
mineBroadcastReceivermBr = new mineBroadcastReceiver();
intentFilter.addAction("MY_BROADCAST");
registerReceiver(mBr, intentFilter);
2.3 该步骤同1.3一样