静态 注册:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent();
//设置广播的名字(设置Action)
intent.setAction("myBroadCast");
//携带数据
intent.putExtra("data","hello");
//发送广播(无序广播)
sendBroadcast(intent);
}
}
public class BroadCastReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("myBroadCast")) {
//接收到广播,取出里面携带的数据
String str = intent.getStringExtra("data");
System.out.println("接收到的广播的数据:" + str);
}
}
}
<!--采用静态注册的方法,只要APP开启,就能够监听广播-->
<receiver android:name=".BroadCastReceive"> <!--注明接受监听广播的文件-->
<intent-filter>
<action android:name="myBroadCast"></action> <!--注明监听的广播的动作,可以添加多个动作-->
</intent-filter>
</receiver>
动态注册:
public class BroadCastReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("myBroadCastAction")) {
//接收到广播,取出里面携带的数据
String str = intent.getStringExtra("data");
System.out.println("接收到的广播的数据:" + str);
}
}
}
public class MainActivity extends AppCompatActivity {
private BroadCastReceive mBroadCastReceive ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
//创建广播接受类实例化对象
mBroadCastReceive = new BroadCastReceive();
IntentFilter intentFiltet = new IntentFilter();
//设置广播的名字(设置Action,可以添加多个要监听的动作)
intentFiltet.addAction("myBroadCastAction");
//注册广播,传入两个参数, 实例化的广播接受者对象,intent 动作筛选对象
registerReceiver(mBroadCastReceive,intentFiltet);
//新建intent 对象
Intent intent = new Intent();
//设置 动作
intent.setAction("myBroadCastAction"); //发送Action
//添加传递的参数
intent.putExtra("data", "Hi!I am broadcastData!");
sendBroadcast(intent);
}
@Override
protected void onPause() {
//取消注册
unregisterReceiver(mBroadCastReceive);
super.onPause();
}
}
让app一直监听,可以用系统Action
public class MainActivity extends ActionBarActivity implements MyReceiver.MyListener {
MyReceiver myReceiver;
private TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);//电池
myReceiver = new MyReceiver();
registerReceiver(myReceiver, intentFilter);//注册即可
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myReceiver);
}
}
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//处理监听动作...
}