Android---实时判断APP网络

对于一些需要网络的app,我们一般都会在进入app之前对网络进行实时判断,一般在app的引导页面(开启页面)中进行判断。

判断网络其实用的就是connectivityManager,但重点在于实时判断,用户在进入你的app 的时候一般在知道自己没网络的时候,会直接打开网络,这时你不能让用户重新退出你的app,重新进一遍吧。

  1. 在你的引导页面创建内部类(也可以单独创建一个类,这里我是在处理activity跳转的时候方便)
class ConnectionChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager=(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo  mobNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo  wifiNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
            BSToast.showLong(context, "网络不可以用");
            //告诉用户网络不可用
        }else {
            //在这里你可以进行activity的跳转或其他操作。
        }
    }
}

2.在引导页面的onCreate() 方法中注册

private  void registerReceiver(){
        IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        myReceiver=new ConnectionChangeReceiver();
        this.registerReceiver(myReceiver, filter);
    }

3.用完之后记得把广播注销了(在onStop或者onDestroy中),给app更好的运行空间

private  void unregisterReceiver(){
        this.unregisterReceiver(myReceiver);
    }

注意权限:

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />

网上提供的去除广播的判断网络的代码:

1.判断是否有网络连接

public boolean isNetworkConnected(Context context) {    
    if (context != null) {    
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context    
                .getSystemService(Context.CONNECTIVITY_SERVICE);    
        NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();    
        if (mNetworkInfo != null) {    
            return mNetworkInfo.isAvailable();    
        }    
    }    
    return false;    
}  

2.判断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;    
}  

3.判断手机网络(数据流量)是否可用

public boolean isMobileConnected(Context context) {    
    if (context != null) {    
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context    
                .getSystemService(Context.CONNECTIVITY_SERVICE);    
        NetworkInfo mMobileNetworkInfo = mConnectivityManager    
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);    
        if (mMobileNetworkInfo != null) {    
            return mMobileNetworkInfo.isAvailable();    
        }    
    }    
    return false;    
}  

4.判断网络类型(是wifi还是数据流量)

       //返回值 -1:没有网络  1:WIFI网络2:wap网络3:net网络  
public static int GetNetype(Context context)  
{   
    int netType = -1;    
    ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);   
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();   
    if(networkInfo==null)  
    {   
        return netType;   
    }   
    int nType = networkInfo.getType();   
    if(nType==ConnectivityManager.TYPE_MOBILE)  
    {   
        if(networkInfo.getExtraInfo().toLowerCase().equals("cmnet"))  
        {   
            netType = 3;   
        }   
        else  
        {   
            netType = 2;   
        }   
    }   
    else if(nType==ConnectivityManager.TYPE_WIFI)  
    {   
        netType = 1;   
    }   
    return netType;   
}  

(学习来源于网络,回报于网络)

你可能感兴趣的:(Anroid-知识点)