android 广播获取网络状态及判断234G

1、定义一个Receiver 

<span style="font-size:14px;"><span style="font-size:18px;">package com.example.net;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
import android.util.Log;

public class NetWorkReceiver extends BroadcastReceiver{
	
	private Context context;
	private static final String TAG = "NetWork";
	@Override
	public void onReceive(Context context, Intent intent) {

		this.context = context;
		
        if(isNetworkConnected(context)){
        	Log.e(TAG,"网络已连接");
        	if(isWifiConnected(context)){
        		Log.v(TAG, "当前为wifi连接");
        	} else {
        		String c = isFastMobileNetwork(context);
                Log.e(TAG,"当前网络为"+c);
        	}
        } else {
        	Log.e(TAG,"网络无连接");
        }
	}
	
	//网络是否有连接
	public boolean isNetworkConnected(Context context) {
		if(context != null) {
			ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
			NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
			if(mNetworkInfo != null && mNetworkInfo.isAvailable()) {
				return mNetworkInfo.isAvailable();
			}
		}
		return false;			
	}
	//是否wifi连接
	public boolean isWifiConnected(Context context) { 
		if (context != null) { 
			ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
					.getSystemService(Context.CONNECTIVITY_SERVICE); 
			NetworkInfo mWiFiNetworkInfo = mConnectivityManager 
					.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
			if (mWiFiNetworkInfo != null) { 
				return mWiFiNetworkInfo.isAvailable(); 
			} 
		} 
		return false; 
	}
	//对应的网络类型
    public static String isFastMobileNetwork(Context context) {  
        TelephonyManager telephonyManager = (TelephonyManager) context  
                .getSystemService(Context.TELEPHONY_SERVICE);  
  
        switch (telephonyManager.getNetworkType()) {  
        case TelephonyManager.NETWORK_TYPE_CDMA:  
        case TelephonyManager.NETWORK_TYPE_EDGE:  
        case TelephonyManager.NETWORK_TYPE_GPRS:  
        case TelephonyManager.NETWORK_TYPE_1xRTT:
        case TelephonyManager.NETWORK_TYPE_IDEN:
            return "2G"; 
        case TelephonyManager.NETWORK_TYPE_HSDPA:  
        case TelephonyManager.NETWORK_TYPE_UMTS:  
        case TelephonyManager.NETWORK_TYPE_EVDO_0:  
        case TelephonyManager.NETWORK_TYPE_EVDO_A:  
        case TelephonyManager.NETWORK_TYPE_HSUPA:  
        case TelephonyManager.NETWORK_TYPE_HSPA: 
        case TelephonyManager.NETWORK_TYPE_EVDO_B:  
        case TelephonyManager.NETWORK_TYPE_EHRPD:  
        case TelephonyManager.NETWORK_TYPE_HSPAP:
        case 17: // TelephonyManager.NETWORK_TYPE_TD_SCDMA:
            return "3G"; 
        case TelephonyManager.NETWORK_TYPE_LTE:  
        case 18: // TelephonyManager.NETWORK_TYPE_IWLAN:
            return "4G";  
        default:  
            return "NETWORK_CLASS_UNKNOWN";  
  
        }  
    }

}</span>
</span>
<span style="font-size:14px;">2、在合适的地方注册注销广播</span>
<span style="font-size:14px;">private NetWorkReceiver nwr = new NetWorkReceiver();//注册    </span>
<span style="font-size:14px;">IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
registerReceiver(nwr, intentFilter);
//注销if(nwr!=null){ 
            unregisterReceiver(nwr); 
        }</span>

3、可能还有许多不完善的地方,希望大神指出

 
 

猜你喜欢

转载自blog.csdn.net/qq_30837235/article/details/50082849