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;

    }



public static boolean isNetworkConnected(Context context)
{
ConnectivityManager connectivitymanager = (ConnectivityManager)context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkinfo = connectivitymanager.getActiveNetworkInfo();
if (networkinfo != null)
return networkinfo.isConnectedOrConnecting();
else
return false;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值