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

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

 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);
 }
}android

 

 


=================网络

 

 

二、NetStateReceiver.java类ide

 


代码spa

 


public class NetStateReceiver extends BroadcastReceiver {.net

 @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();
  }
 }get

}
it

相关文章
相关标签/搜索