android判断网络是否可用

import android.content.Context;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.content.pm.PackageManager;
import android.os.Build;
import android.net.Network;
import android.net.NetworkCapabilities;

public static boolean isNetAvailable(Context context) {

        PackageManager localPackageManager = context.getPackageManager();
    if (localPackageManager.checkPermission("android.permission.ACCESS_NETWORK_STATE", context.getPackageName()) != 0){
      return false;
    }


    ConnectivityManager localConnectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (localConnectivityManager == null) {
      return false;
    }
    try {
    //android 5.0以后引入了多网络连接,getAllNetworkInfo将要在6.0以后弃用
    if(Build.VERSION.SDK_INT >= 21){
    Network[] networks = localConnectivityManager.getAllNetworks();
    for (Network network : networks) {
   NetworkCapabilities capabilities = localConnectivityManager.getNetworkCapabilities(network);
   if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
    capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
    capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN) ||
    capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
    return true;
   }
}
}else {
NetworkInfo[] info = localConnectivityManager.getAllNetworkInfo();
       if (info != null) {
           for (int i = 0; i < info.length; i++) {
            if (info[i] == null)
            continue;


               if (info[i].isConnected() ) {
                   return true;
               }
               // if (info[i].isConnectedOrConnecting() ) {
               //     return true;
               // }
           }
       }
}
    } catch (Exception e) {
    }
    return false;
    }

猜你喜欢

转载自blog.csdn.net/ahaitongxue/article/details/80506771
今日推荐