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; }
@Override protected void after(XParam param) throws Throwable { switch (mMethod) { case getAddresses: case getAllAddresses: if (param.getResult() != null) if (isRestricted(param)) param.setResult(new ArrayList<InetAddress>()); break; case getAllLinkAddresses: case getLinkAddresses: if (param.getResult() != null) if (isRestricted(param)) param.setResult(new ArrayList<LinkAddress>()); break; case getStackedLinks: if (param.getResult() != null) if (isRestricted(param)) param.setResult(new ArrayList<LinkProperties>()); break; } }
@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(); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private String getIp(LinkProperties lp) { List<LinkAddress> las = lp.getLinkAddresses(); for(LinkAddress la: las) { InetAddress inetAddress = la.getAddress(); if (inetAddress instanceof Inet4Address) { //Log.d(TAG, lp.getInterfaceName() + ": " + inetAddress.getHostAddress()); return inetAddress.getHostAddress(); } } return null; }
@SuppressLint("NewApi") IPAddress[] getIPAddresses(LinkProperties linkProperties) { IPAddress[] ipAddresses = new IPAddress[linkProperties.getLinkAddresses().size()]; int i = 0; for (LinkAddress linkAddress : linkProperties.getLinkAddresses()) { ipAddresses[i] = new IPAddress(linkAddress.getAddress().getAddress()); ++i; } return ipAddresses; }
@SuppressLint("NewApi") private void showIpConfigFields() { WifiConfiguration config = null; mView.findViewById(R.id.ip_fields).setVisibility(View.VISIBLE); if (mAccessPoint != null && mAccessPoint.networkId != INVALID_NETWORK_ID) { config = mAccessPoint.getConfig(); } if (mIpSettingsSpinner.getSelectedItemPosition() == STATIC_IP) { mView.findViewById(R.id.staticip).setVisibility(View.VISIBLE); if (mIpAddressView == null) { mIpAddressView = (TextView) mView.findViewById(R.id.ipaddress); mIpAddressView.addTextChangedListener(this); mGatewayView = (TextView) mView.findViewById(R.id.gateway); mGatewayView.addTextChangedListener(this); mNetworkPrefixLengthView = (TextView) mView.findViewById( R.id.network_prefix_length); mNetworkPrefixLengthView.addTextChangedListener(this); mDns1View = (TextView) mView.findViewById(R.id.dns1); mDns1View.addTextChangedListener(this); mDns2View = (TextView) mView.findViewById(R.id.dns2); mDns2View.addTextChangedListener(this); } if (config != null) { LinkProperties linkProperties = config.linkProperties; Iterator<LinkAddress> iterator = linkProperties.getLinkAddresses().iterator(); if (iterator.hasNext()) { LinkAddress linkAddress = iterator.next(); mIpAddressView.setText(linkAddress.getAddress().getHostAddress()); mNetworkPrefixLengthView.setText(Integer.toString(linkAddress .getNetworkPrefixLength())); } for (RouteInfo route : linkProperties.getRoutes()) { if (route.isDefaultRoute()) { mGatewayView.setText(route.getGateway().getHostAddress()); break; } } Iterator<InetAddress> dnsIterator = linkProperties.getDnses().iterator(); if (dnsIterator.hasNext()) { mDns1View.setText(dnsIterator.next().getHostAddress()); } if (dnsIterator.hasNext()) { mDns2View.setText(dnsIterator.next().getHostAddress()); } } } else { mView.findViewById(R.id.staticip).setVisibility(View.GONE); } }