Java 类android.net.Network 实例源码

项目:android-util2    文件:NetworkCompatUtil.java   
private static List<NetworkInfo> getConnectedNetworks(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (cm == null) {
        return null;
    }
    final List<NetworkInfo> list = new ArrayList<NetworkInfo>();
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        NetworkInfo[] networkInfoList = cm.getAllNetworkInfo();
        if (networkInfoList != null) {
            final int length = networkInfoList.length;
            for (int i = 0; i < length; i++) {
                if (networkInfoList[i].getState() == NetworkInfo.State.CONNECTED) {
                    list.add(networkInfoList[i]);
                }
            }
        }
    } else {
        final Network[] networks = cm.getAllNetworks();
        if (networks != null && networks.length > 0) {
            NetworkInfo info;
            for (Network network : networks) {
                info = cm.getNetworkInfo(network);
                if (info != null && info.getState() == NetworkInfo.State.CONNECTED) {
                    list.add(info);
                }
            }
        }
    }
    return list;
}
项目:open-rmbt    文件:RMBTTask.java   
@TargetApi(23)
private static List<InetAddress> getDnsServers(Context context) {
    List<InetAddress> servers = new ArrayList<>();
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    //Network[] networks = connectivityManager == null ? null : connectivityManager.getAllNetworks();
    Network[] networks = connectivityManager == null ? null : new Network[]{connectivityManager.getActiveNetwork()};
    if (networks == null) {
        return servers;
    }
    for(int i = 0; i < networks.length; ++i) {
        LinkProperties linkProperties = connectivityManager.getLinkProperties(networks[i]);
        if (linkProperties != null) {
            servers.addAll(linkProperties.getDnsServers());
        }
    }

    for(InetAddress server : servers) {
        Log.d("dns","DNS server: " + Strings.nullToEmpty(server.getHostName()) + " (" + server.getHostAddress() + ")");
    }

    return servers;
}
项目:CIA    文件:NetworkUtilities.java   
/**
 * @param context the current application context
 * @return whether the device was connected to the internet
 */
public static boolean hasInternetConnection(Context context) {

    /*
    Taken from Johan's answer at: https://stackoverflow.com/a/35009615
     */

    ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Network network;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
        network = connectivityManager.getActiveNetwork();
    } else
        return true;
    NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
    return capabilities != null && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
}
项目:chromium-net-for-android    文件:NetworkChangeNotifierAutoDetect.java   
@Override
public void onCapabilitiesChanged(
        Network network, NetworkCapabilities networkCapabilities) {
    if (ignoreConnectedNetwork(network, networkCapabilities)) {
        return;
    }
    // A capabilities change may indicate the ConnectionType has changed,
    // so forward the new ConnectionType along to observer.
    final long netId = networkToNetId(network);
    final int connectionType =
            getCurrentConnectionType(mConnectivityManagerDelegate.getNetworkState(network));
    ThreadUtils.postOnUiThread(new Runnable() {
        @Override
        public void run() {
            mObserver.onNetworkConnect(netId, connectionType);
        }
    });
}
项目:chromium-net-for-android    文件:NetworkChangeNotifierTest.java   
@UiThreadTest
@MediumTest
@Feature({"Android-AppBase"})
public void testConnectivityManagerDelegateDoesNotCrash() {
    ConnectivityManagerDelegate delegate =
            new ConnectivityManagerDelegate(getInstrumentation().getTargetContext());
    delegate.getNetworkState();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        // getNetworkState(Network) doesn't crash upon invalid Network argument.
        Network invalidNetwork = netIdToNetwork(NetId.INVALID);
        NetworkState invalidNetworkState = delegate.getNetworkState(invalidNetwork);
        assertFalse(invalidNetworkState.isConnected());
        assertEquals(-1, invalidNetworkState.getNetworkType());
        assertEquals(-1, invalidNetworkState.getNetworkSubType());

        Network[] networks = delegate.getAllNetworksUnfiltered();
        if (networks.length >= 1) {
            delegate.getNetworkState(networks[0]);
        }
        delegate.getDefaultNetId();
        NetworkCallback networkCallback = new NetworkCallback();
        NetworkRequest networkRequest = new NetworkRequest.Builder().build();
        delegate.registerNetworkCallback(networkRequest, networkCallback);
        delegate.unregisterNetworkCallback(networkCallback);
    }
}
项目:gnirehtet    文件:GnirehtetService.java   
private Network findVpnNetwork() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    Network[] networks = cm.getAllNetworks();
    for (Network network : networks) {
        LinkProperties linkProperties = cm.getLinkProperties(network);
        List<LinkAddress> addresses = linkProperties.getLinkAddresses();
        for (LinkAddress addr : addresses) {
            if (addr.getAddress().equals(VPN_ADDRESS)) {
                return network;
            }
        }
    }
    return null;
}
项目:AndroidRTC    文件:NetworkMonitorTest.java   
/**
 * Tests that ConnectivityManagerDelegate doesn't crash. This test cannot rely on having any
 * active network connections so it cannot usefully check results, but it can at least check
 * that the functions don't crash.
 */
@Test
@UiThreadTest
@SmallTest
public void testConnectivityManagerDelegateDoesNotCrash() {
  ConnectivityManagerDelegate delegate =
      new ConnectivityManagerDelegate(InstrumentationRegistry.getTargetContext());
  delegate.getNetworkState();
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Network[] networks = delegate.getAllNetworks();
    if (networks.length >= 1) {
      delegate.getNetworkState(networks[0]);
      delegate.hasInternetCapability(networks[0]);
    }
    delegate.getDefaultNetId();
  }
}
项目:RxNetwork    文件:RxNetworkInfo.java   
@RequiresApi(LOLLIPOP)
@Nullable
static NetworkInfo getNetworkInfo(@NonNull Network network,
    @NonNull ConnectivityManager connectivityManager) {

  NetworkInfo networkInfo = null;

  try {
    networkInfo = connectivityManager.getNetworkInfo(network);
  } catch (Exception exc) {
    logger.log(WARNING,
        "Could not retrieve network info from provided network: " + exc.getMessage());
  }

  return networkInfo;
}
项目:Customerly-Android-SDK    文件:IU_NetworkReceiver.java   
public static void registerLollipopNetworkReceiver(Context context) {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        cm.registerNetworkCallback(
                new NetworkRequest.Builder()
                        .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                        .build(),
                new ConnectivityManager.NetworkCallback() {
                    @Override
                    public void onAvailable(Network network) {
                        boolean connected = false;
                        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                            connected = cm.bindProcessToNetwork(network);
                        } else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
                            //noinspection deprecation
                            connected = ConnectivityManager.setProcessDefaultNetwork(network);
                        }
                        if(connected) {
                            Customerly.get().__SOCKET__check();
                        }
                    }
                });
    }
}
项目:Customerly-Android-SDK    文件:IU_Utils.java   
@Contract("null -> false")
@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
static boolean checkConnection(@Nullable Context c) {
    if(c == null)
        return false;
    ConnectivityManager manager = (ConnectivityManager) c
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info;
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Network[] nets = manager.getAllNetworks();
        for (Network net : nets) {
            info = manager.getNetworkInfo(net);
            if (info != null && info.getState() == NetworkInfo.State.CONNECTED)
                return true;
        }
        return false;
    } else {
        info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (info != null && info.getState() == NetworkInfo.State.CONNECTED)
            return true;
        info = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (info != null && info.getState() == NetworkInfo.State.CONNECTED)
            return true;
        info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIMAX);
        return info != null && info.getState() == NetworkInfo.State.CONNECTED;
    }
}
项目:android-wificonnect    文件:WifiUtil.java   
@TargetApi(LOLLIPOP)
NetworkCallback networkCallback(final String networkSSID,
                                final NetworkStateChangeListener listener) {
    return new NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            NetworkInfo networkInfo = manager.getNetworkInfo(network);
            logger.i("Network is Available. Network Info: " + networkInfo);

            if (WifiHelper.areEqual(networkInfo.getExtraInfo(), networkSSID)) {
                manager.unregisterNetworkCallback(this);
                networkCallback = null;
                bindToRequiredNetwork(network);
                logger.i(format("Bound application to use %s network", networkSSID));
                listener.onNetworkBound();
            }
        }
    };
}
项目:android-xmpp-iot-demo    文件:NetworkConnectivityReceiver.java   
@SuppressWarnings("deprecation")
private static void logNetworks(ConnectivityManager connectivityManager) {
    NetworkInfo[] networkInfos;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        networkInfos = connectivityManager.getAllNetworkInfo();
    } else {
        Network[] networks = connectivityManager.getAllNetworks();
        networkInfos = new NetworkInfo[networks.length];
        for (int i = 0; i < networks.length; i++) {
            networkInfos[i] = connectivityManager.getNetworkInfo(networks[i]);
        }
    }

    for (NetworkInfo networkInfo : networkInfos)
        log(networkInfo);
}
项目:dns66    文件:AdVpnThread.java   
private static Set<InetAddress> getDnsServers(Context context) throws VpnNetworkException {
    Set<InetAddress> out = new HashSet<>();
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(VpnService.CONNECTIVITY_SERVICE);
    // Seriously, Android? Seriously?
    NetworkInfo activeInfo = cm.getActiveNetworkInfo();
    if (activeInfo == null)
        throw new VpnNetworkException("No DNS Server");

    for (Network nw : cm.getAllNetworks()) {
        NetworkInfo ni = cm.getNetworkInfo(nw);
        if (ni == null || !ni.isConnected() || ni.getType() != activeInfo.getType()
                || ni.getSubtype() != activeInfo.getSubtype())
            continue;
        for (InetAddress address : cm.getLinkProperties(nw).getDnsServers())
            out.add(address);
    }
    return out;
}
项目:messengerxmpp    文件:DNSHelper.java   
@TargetApi(21)
private static List<InetAddress> getDnsServers(Context context) {
    List<InetAddress> servers = new ArrayList<>();
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Network[] networks = connectivityManager == null ? null : connectivityManager.getAllNetworks();
    if (networks == null) {
        return getDnsServersPreLollipop();
    }
    for(int i = 0; i < networks.length; ++i) {
        LinkProperties linkProperties = connectivityManager.getLinkProperties(networks[i]);
        if (linkProperties != null) {
            servers.addAll(linkProperties.getDnsServers());
        }
    }
    if (servers.size() > 0) {
        Log.d(Config.LOGTAG,"used lollipop variant to discover dns servers in "+networks.length+" networks");
    }
    return servers.size() > 0 ? servers : getDnsServersPreLollipop();
}
项目:Accessories_Android    文件:NetworkUtils.java   
public static boolean isMobileOnline(final Context context) {

        boolean state = false;

        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            Network[] networks = connectivityManager.getAllNetworks();
            for (Network network : networks) {
                NetworkInfo info = connectivityManager.getNetworkInfo(network);
                if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
                    state = info.isConnectedOrConnecting();
                }
            }
        } else {
        /* Mobile data connection */
            NetworkInfo mobileNetwork = connectivityManager
                    .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            if (mobileNetwork != null) {
                state = mobileNetwork.isConnectedOrConnecting();
            }
        }
        return state;
    }
项目:UseCases    文件:Utils.java   
public boolean isNetworkAvailable(@NonNull Context context) {
    ConnectivityManager connectivityManager =
            (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Network[] networks = connectivityManager.getAllNetworks();
        for (Network network : networks) {
            if (connectivityManager
                    .getNetworkInfo(network)
                    .getState()
                    .equals(NetworkInfo.State.CONNECTED)) {
                return true;
            }
        }
    } else if (connectivityManager != null) {
        NetworkInfo[] info = connectivityManager.getAllNetworkInfo();
        if (info != null) {
            for (NetworkInfo anInfo : info) {
                if (anInfo.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}
项目:Eylca    文件:NetworkManaging.java   
public static boolean forceWifiUse(Context context) {
    if (context == null)
        return false;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
        //TODO rewrite this in order to support multiples API
        //TODO (use bindProcessToNetwork, setProcessDefaultNetwork, and requestRouteToHost)
        Network[] networks = manager.getAllNetworks();
        int i = 0;
        for (i = 0; i < networks.length; i++) {
            NetworkInfo info = manager.getNetworkInfo(networks[i]);
            if (info != null)
                if (info.isConnected())
                    if (info.getType() == manager.TYPE_WIFI)
                        break;
        }
        if (i == networks.length) {
            return false;
        } else {
            return manager.bindProcessToNetwork(networks[i]);
        }
    }
    return false;
}
项目:FZBaseLib    文件:FZNetworkInfoHelper.java   
/**
 * 网络是否可用
 *
 * @param context 上下文
 * @return true 可用 false 不可用
 */
public static boolean isNetworkAvailable(Context context) {
    if (context != null) {
        ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        Network[] networks;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            networks = mgr.getAllNetworks();
            for (Network network : networks) {
                NetworkInfo networkInfo = mgr.getNetworkInfo(network);
                if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        } else {
            NetworkInfo[] info = mgr.getAllNetworkInfo();
            if (info != null) {
                for (NetworkInfo anInfo : info) {
                    if (anInfo.getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
项目:Customerly-Android-SDK    文件:IU_NetworkReceiver.java   
public static void registerLollipopNetworkReceiver(Context context) {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        cm.registerNetworkCallback(
                new NetworkRequest.Builder()
                        .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                        .build(),
                new ConnectivityManager.NetworkCallback() {
                    @Override
                    public void onAvailable(Network network) {
                        boolean connected = false;
                        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                            connected = cm.bindProcessToNetwork(network);
                        } else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
                            //noinspection deprecation
                            connected = ConnectivityManager.setProcessDefaultNetwork(network);
                        }
                        if(connected) {
                            Customerly.get().__SOCKET__check();
                        }
                    }
                });
    }
}
项目:365browser    文件:AndroidNetworkLibrary.java   
/**
 * Returns true if the system's captive portal probe was blocked for the current default data
 * network. The method will return false if the captive portal probe was not blocked, the login
 * process to the captive portal has been successfully completed, or if the captive portal
 * status can't be determined. Requires ACCESS_NETWORK_STATE permission. Only available on
 * Android Marshmallow and later versions. Returns false on earlier versions.
 */
@TargetApi(Build.VERSION_CODES.M)
@CalledByNative
private static boolean getIsCaptivePortal() {
    // NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL is only available on Marshmallow and
    // later versions.
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return false;
    ConnectivityManager connectivityManager =
            (ConnectivityManager) ContextUtils.getApplicationContext().getSystemService(
                    Context.CONNECTIVITY_SERVICE);
    if (connectivityManager == null) return false;

    Network network = connectivityManager.getActiveNetwork();
    if (network == null) return false;

    NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
    return capabilities != null
            && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
}
项目:365browser    文件:AndroidNetworkLibrary.java   
@TargetApi(Build.VERSION_CODES.M)
@CalledByNative
private static byte[][] getDnsServers() {
    ConnectivityManager connectivityManager =
            (ConnectivityManager) ContextUtils.getApplicationContext().getSystemService(
                    Context.CONNECTIVITY_SERVICE);
    if (connectivityManager == null) {
        return new byte[0][0];
    }
    Network network = connectivityManager.getActiveNetwork();
    if (network == null) {
        return new byte[0][0];
    }
    LinkProperties linkProperties = connectivityManager.getLinkProperties(network);
    if (linkProperties == null) {
        return new byte[0][0];
    }
    List<InetAddress> dnsServersList = linkProperties.getDnsServers();
    byte[][] dnsServers = new byte[dnsServersList.size()][];
    for (int i = 0; i < dnsServersList.size(); i++) {
        dnsServers[i] = dnsServersList.get(i).getAddress();
    }
    return dnsServers;
}
项目:365browser    文件:NetworkChangeNotifierAutoDetect.java   
/**
 * Returns connection type for |network|.
 * Only callable on Lollipop and newer releases.
 */
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@ConnectionType
int getConnectionType(Network network) {
    NetworkInfo networkInfo = getNetworkInfo(network);
    if (networkInfo != null && networkInfo.getType() == TYPE_VPN) {
        // When a VPN is in place the underlying network type can be queried via
        // getActiveNeworkInfo() thanks to
        // https://android.googlesource.com/platform/frameworks/base/+/d6a7980d
        networkInfo = mConnectivityManager.getActiveNetworkInfo();
    }
    if (networkInfo != null && networkInfo.isConnected()) {
        return convertToConnectionType(networkInfo.getType(), networkInfo.getSubtype());
    }
    return ConnectionType.CONNECTION_NONE;
}
项目:365browser    文件:NetworkChangeNotifierAutoDetect.java   
@Override
public void onCapabilitiesChanged(
        Network network, NetworkCapabilities networkCapabilities) {
    if (ignoreConnectedNetwork(network, networkCapabilities)) {
        return;
    }
    // A capabilities change may indicate the ConnectionType has changed,
    // so forward the new ConnectionType along to observer.
    final long netId = networkToNetId(network);
    final int connectionType = mConnectivityManagerDelegate.getConnectionType(network);
    runOnThread(new Runnable() {
        @Override
        public void run() {
            mObserver.onNetworkConnect(netId, connectionType);
        }
    });
}
项目:aria2-android    文件:ConfigBuilder.java   
@TargetApi(Build.VERSION_CODES.M)
private String getActiveInterface() {
    final Network network = cm.getActiveNetwork();

    if (network == null) {
        return null;
    }

    final LinkProperties linkInfo = cm.getLinkProperties(network);

    if (linkInfo == null) {
        return null;
    }

    final List<LinkAddress> linkAddress = linkInfo.getLinkAddresses();

    if (linkAddress.isEmpty()) {
        return null;
    }

    final InetAddress address = linkAddress.get(0).getAddress();

    return address.getHostAddress();
}
项目:DNSman    文件:NativeCommandUtils.java   
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static String getNetId(Context c){
    String netId = "";
    ConnectivityManager manager =
            (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);

    try{
        Network[] networks = manager.getAllNetworks();
        for(Network i: networks){
            netId = i.getClass().getDeclaredField("netId").get(i).toString();
        }
    }catch (Exception e){
        e.printStackTrace();
    }
    return netId;
}
项目:SchulinfoApp-android    文件:SIABroadcast.java   
@SuppressWarnings("deprecation")
public static boolean isWlanConnected(Context c) {
    ConnectivityManager cm = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        for(Network n : cm.getAllNetworks()) {
            NetworkInfo info = cm.getNetworkInfo(n);
            if(info != null && info.getType() == ConnectivityManager.TYPE_WIFI && info.isConnected()) {
                return true;
            }
        }
        return false;
    } else {
        return cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();
    }

}
项目:frozenchat    文件:DNSHelper.java   
@TargetApi(21)
private static List<InetAddress> getDnsServers(Context context) {
    List<InetAddress> servers = new ArrayList<>();
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Network[] networks = connectivityManager == null ? null : connectivityManager.getAllNetworks();
    if (networks == null) {
        return getDnsServersPreLollipop();
    }
    for(int i = 0; i < networks.length; ++i) {
        LinkProperties linkProperties = connectivityManager.getLinkProperties(networks[i]);
        if (linkProperties != null) {
            if (hasDefaultRoute(linkProperties)) {
                servers.addAll(0, linkProperties.getDnsServers());
            } else {
                servers.addAll(linkProperties.getDnsServers());
            }
        }
    }
    if (servers.size() > 0) {
        Log.d(Config.LOGTAG, "used lollipop variant to discover dns servers in " + networks.length + " networks");
    }
    return servers.size() > 0 ? servers : getDnsServersPreLollipop();
}
项目:AndroidBootstrap    文件:NetworkUtils.java   
/**
 * Determine if device connected to network
 * @param context context
 * @return true if connected, false otherwise
 */
@SuppressWarnings("deprecation")
public static boolean isConnected(@NonNull final Context context) {
    final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        final NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        final NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        return wifi != null && wifi.isConnected() || mobile != null && mobile.isConnected();
    } else {
        boolean connected = false;
        for (Network network : connMgr.getAllNetworks()) {
            NetworkInfo info = connMgr.getNetworkInfo(network);
            connected |= info != null && info.isConnected();
        }
        return connected;
    }
}
项目:maxs    文件:NetworkConnectivityReceiver.java   
@SuppressWarnings("deprecation")
private static void logNetworks(ConnectivityManager connectivityManager) {
    NetworkInfo[] networkInfos;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        networkInfos = connectivityManager.getAllNetworkInfo();
    } else {
        Network[] networks = connectivityManager.getAllNetworks();
        networkInfos = new NetworkInfo[networks.length];
        for (int i = 0; i < networks.length; i++) {
            networkInfos[i] = connectivityManager.getNetworkInfo(networks[i]);
        }
    }

    for (NetworkInfo networkInfo : networkInfos)
        log(networkInfo);
}
项目:timelapse-sony    文件:StateMachineConnection.java   
@Override
public void process(final StateMachineConnection sm) {

    // Workaround when there is a data connection more than the wifi one
    // http://stackoverflow.com/questions/33237074/request-over-wifi-on-android-m
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
        ConnectivityManager connectivityManager = (ConnectivityManager)
                sm.mApplication.getSystemService(Context.CONNECTIVITY_SERVICE);
        for (Network net : connectivityManager.getAllNetworks()) {
            NetworkInfo netInfo = connectivityManager.getNetworkInfo(net);
            if (netInfo != null
                    && netInfo.getType() == ConnectivityManager.TYPE_WIFI
                    && netInfo.getExtraInfo() != null
                    && netInfo.getExtraInfo()
                    .equals(sm.mStateRegistry.wifiInfo.getSSID())) {
                connectivityManager.bindProcessToNetwork(net);
                break;
            }
        }
    }

    sm.mStateRegistry.apiAttempts = 1;
    sm.setCurrentState(State.CHECK_API);
}
项目:javocsoft-toolbox    文件:ToolBox.java   
/**
 * Returns TRUE if WiFi is ON and connected.
 * <br><br>
 * This method requires the caller to hold the permission android.Manifest.permission.ACCESS_NETWORK_STATE
 * 
 * @param context
 * @return
 */
@SuppressLint("NewApi")
public static boolean net_isWifiOn(Context context) {
    boolean res = false;

    ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if(connManager!=null) {

        if(ToolBox.device_hasAPILevel(ApiLevel.LEVEL_21)){
            Network[] networks = connManager.getAllNetworks();
            for(Network n:networks) {
                NetworkInfo nInfo = connManager.getNetworkInfo(n);
                if( nInfo != null && nInfo.getType() == ConnectivityManager.TYPE_WIFI && nInfo.isConnected()){
                    res = true;
                    break;
                }
            }
        }else{
            NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            if (mWifi!=null && mWifi.isConnected()) {
                res = true;
            }
        }           
    }
    return res;
}
项目:HSEWifi    文件:HSEConnect.java   
private void defaultToWifi() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        connectivityManager.setNetworkPreference(ConnectivityManager.TYPE_WIFI);
        return;
    }

    Network network = null;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        network = getNetwork();
    }

    if(network != null) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            connectivityManager.bindProcessToNetwork(getNetwork());
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            try {
                ConnectivityManager.setProcessDefaultNetwork(network);
            } catch (IllegalStateException ignored) {

            }
        }
    }
}
项目:HSEWifi    文件:HSEConnect.java   
@SuppressWarnings("deprecation")
private void recheckNetwork() {
    Network network;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        network = getNetwork();
    } else {
        return;
    }

    if(network != null) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            connectivityManager.reportNetworkConnectivity(network,true);
            return;
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            connectivityManager.reportBadNetwork(network);
        }
    }
}
项目:wva_sample    文件:NetworkUtils.java   
@SuppressWarnings("deprecation")
private static boolean connectedToWifi(Context context) {
    boolean wifiConnected = false;
    ConnectivityManager connManager =
            (ConnectivityManager) context.getSystemService(
                                        Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        NetworkInfo mWifi = connManager.getNetworkInfo(
                                        ConnectivityManager.TYPE_WIFI);
        wifiConnected = mWifi != null && mWifi.isConnected();
    }
    else {
        Network[] networks = connManager.getAllNetworks();
        NetworkInfo networkInfo;
        for (Network mNetwork : networks) {
            networkInfo = connManager.getNetworkInfo(mNetwork);
            wifiConnected = (networkInfo != null && networkInfo.getType() ==
                    ConnectivityManager.TYPE_WIFI && networkInfo.isConnected());
        }
    }
    return wifiConnected;
}
项目:aos-FileCoreLibrary    文件:SambaDiscovery.java   
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private LinkProperties getLP(ConnectivityManager connMgr, int cap) {
    Network nets[] = connMgr.getAllNetworks();
    for (Network n: nets) {
        LinkProperties lp = connMgr.getLinkProperties(n);
        NetworkCapabilities np = connMgr.getNetworkCapabilities(n);
        String iname =  lp.getInterfaceName();
        if (iname != null && np != null) {
            //Log.d(TAG, ">>> " + iname + ": " + np.hasTransport(cap));
            if (np.hasTransport(cap))
                return lp;
        }
    }
    return null;
}
项目:chromium-net-for-android    文件:NetworkChangeNotifierAutoDetect.java   
/**
 * Returns connection type and status information about |network|.
 * Only callable on Lollipop and newer releases.
 */
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
NetworkState getNetworkState(Network network) {
    final NetworkInfo networkInfo = getNetworkInfo(network);
    if (networkInfo != null && networkInfo.getType() == TYPE_VPN) {
        // When a VPN is in place the underlying network type can be queried via
        // getActiveNeworkInfo() thanks to
        // https://android.googlesource.com/platform/frameworks/base/+/d6a7980d
        return getNetworkState();
    }
    return getNetworkState(networkInfo);
}
项目:chromium-net-for-android    文件:NetworkChangeNotifierAutoDetect.java   
/**
 * Returns {@code true} if {@code network} applies to (and hence is accessible) to the
 * current user.
 */
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@VisibleForTesting
protected boolean vpnAccessible(Network network) {
    // Determine if the VPN applies to the current user by seeing if a socket can be bound
    // to the VPN.
    try {
        network.getSocketFactory().createSocket().close();
    } catch (IOException e) {
        // Failed to bind so this VPN isn't for the current user to use.
        return false;
    }
    return true;
}
项目:chromium-net-for-android    文件:NetworkChangeNotifierAutoDetect.java   
void initializeVpnInPlace() {
    final Network[] networks = getAllNetworksFiltered(mConnectivityManagerDelegate, null);
    mVpnInPlace = null;
    // If the filtered list of networks contains just a VPN, then that VPN is in place.
    if (networks.length == 1) {
        final NetworkCapabilities capabilities =
                mConnectivityManagerDelegate.getNetworkCapabilities(networks[0]);
        if (capabilities != null && capabilities.hasTransport(TRANSPORT_VPN)) {
            mVpnInPlace = networks[0];
        }
    }
}
项目:chromium-net-for-android    文件:NetworkChangeNotifierAutoDetect.java   
/**
 * Should changes to connected network {@code network} be ignored?
 * @param network Network to possibly consider ignoring changes to.
 * @param capabilities {@code NetworkCapabilities} for {@code network} if known, otherwise
 *         {@code null}.
 * @return {@code true} when either: {@code network} is an inaccessible VPN, or has already
 *         disconnected.
 */
private boolean ignoreConnectedInaccessibleVpn(
        Network network, NetworkCapabilities capabilities) {
    // Fetch capabilities if not provided.
    if (capabilities == null) {
        capabilities = mConnectivityManagerDelegate.getNetworkCapabilities(network);
    }
    // Ignore inaccessible VPNs as they don't apply to Chrome.
    return capabilities == null
            || capabilities.hasTransport(TRANSPORT_VPN)
            && !mConnectivityManagerDelegate.vpnAccessible(network);
}
项目:chromium-net-for-android    文件:NetworkChangeNotifierAutoDetect.java   
@Override
public void onAvailable(Network network) {
    final NetworkCapabilities capabilities =
            mConnectivityManagerDelegate.getNetworkCapabilities(network);
    if (ignoreConnectedNetwork(network, capabilities)) {
        return;
    }
    final boolean makeVpnDefault = capabilities.hasTransport(TRANSPORT_VPN);
    if (makeVpnDefault) {
        mVpnInPlace = network;
    }
    final long netId = networkToNetId(network);
    final int connectionType =
            getCurrentConnectionType(mConnectivityManagerDelegate.getNetworkState(network));
    ThreadUtils.postOnUiThread(new Runnable() {
        @Override
        public void run() {
            mObserver.onNetworkConnect(netId, connectionType);
            if (makeVpnDefault) {
                // Make VPN the default network.
                mObserver.onConnectionTypeChanged(connectionType);
                // Purge all other networks as they're inaccessible to Chrome now.
                mObserver.purgeActiveNetworkList(new long[] {netId});
            }
        }
    });
}