BroadCastReceiver(广播接收者)动态注册简单例子

  //实现有无网络监听
  
  动态注册方式特点: 在代码中进行注册后, 当应用程序关闭后, 就不再进行监听。
  
  
  //源文件2个一个MainActivity.java和NetStateReceiver.java类
  //记得在配置清单里添加网络连接权限
  
  
  
  
  
  1、MainActivity.java类
  
  
  
  
  代码
  
  
  
  public class MainActivity extends Activity {

 private NetStateReceiver netStateReceiver;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  netStateReceiver = new NetStateReceiver();
 }
 
 @Override
 protected void onStart() {
  // TODO Auto-generated method stub
  super.onStart();
  //在这个方法动态创建广播接收
  IntentFilter filter = new IntentFilter();//过滤
  
  //设置过滤
  filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
  
  //动态注册广播接收
  registerReceiver(netStateReceiver, filter);
 }
 
 @Override
 protected void onStop() {
  // TODO Auto-generated method stub
  super.onStop();
  //撤销网络状态监听
  unregisterReceiver(netStateReceiver);
 }
}

 

 


=================

 

 

2、NetStateReceiver.java类

 


代码

 


public class NetStateReceiver extends BroadcastReceiver {

 @Override
 public void onReceive(Context context, Intent intent) {
  
  //获取连接管理器
  ConnectivityManager connectivityManager = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
  
  //通过连接管理器获取当前网络信息
  NetworkInfo info = connectivityManager.getActiveNetworkInfo();
  if(info == null){
   Toast.makeText(context,"当前无网络!", Toast.LENGTH_SHORT).show();
  }
  else if(info.isConnected()){//有网络
   Toast.makeText(context, info.getTypeName() + "网路已连接", Toast.LENGTH_SHORT).show();
  }
 }

}

转载于:https://my.oschina.net/u/2542711/blog/615910

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值