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

相關文章
相關標籤/搜索