Android实时监听网络的变化

 一、基本思路

     现在的网络里面,无非就是4中情况。1.无网  2.wifi 3.移动信号 4.网线(盒子)。所以我们用一个广播就行。

二、具体实现

    新建一个广播

BroadcastReceiver netReceiver =new BroadcastReceiver(){

		@Override
		public void onReceive(Context context, Intent intent) {
	        String action = intent.getAction();  
	        if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {  
	            ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(  
	                    Context.CONNECTIVITY_SERVICE);  
	            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();  
	            if (networkInfo != null && networkInfo.isAvailable()) {  
	                int type2 = networkInfo.getType();
	                String typeName = networkInfo.getTypeName();
	                tv.setText(type2+"--"+typeName);
	                
	                switch (type2) {  
	                    case 0://移动 网络    2G 3G 4G 都是一样的 实测 mix2s 联通卡
	                      
	                        break;  
	                    case 1: //wifi网络  
	                         break;  
	                         
	                    case 9:  //网线连接
	                    	break;
	                }  
	            } else {// 无网络  
	               tv.setText("not connect");
	            }  
	        }  
		}
		
	};

  在activity里面的oncreate注册,注册的方式有两种,静态和动态注册。他们的区别是

    1.静态注册。在清单文件minnifest注册。不随activity的生命周期变化而变化,也就是activity摧毁后,广播还在。

    2.动态注册。activty销毁,广播失效 。

   这里我们采用动态注册。

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv = (TextView)findViewById(R.id.tv);
		initReceiver();
	}
	/**
	 * 注册网络监听的广播
	 */
	private void initReceiver() {
		IntentFilter timeFilter = new IntentFilter();  
		timeFilter.addAction("android.net.ethernet.ETHERNET_STATE_CHANGED");
		timeFilter.addAction("android.net.ethernet.STATE_CHANGE");
		timeFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
		timeFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
		timeFilter.addAction("android.net.wifi.STATE_CHANGE");
		timeFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
		registerReceiver(netReceiver, timeFilter);  
	}

在ondestory()销毁:

@Override
	protected void onDestroy() {
		super.onDestroy();
		if (netReceiver != null) {  
            unregisterReceiver(netReceiver);  
            netReceiver = null;  
		}  
	}

Mannifest 添加权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
下载 源文件



  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值