在Android中找到本地网络地址 - 包括IP和NetMask? (以太网不wifi)

时间:2014-08-27 08:57:06

标签: android networking ip-address mask ethernet

在Android模拟器中,地址(eth0)为10.0.2.15/24

在支持以太网的平板电脑上,eth0具有类似的地址:例如192.168.0.2/24

如何通过现有的Android API找到它? (现有版本 - 在Android L预览之前 !)。

我知道可以通过WifiManager.getDhcpInfo()完成WiFi - 但我对以太网感兴趣 - 或者更好的通用方式。

1 个答案:

答案 0 :(得分:5)

这是一个获取掩码的方法,AKA是网络前缀长度。最小API为9,并且需要INTERNET权限。该地址带有“/”前缀,但可以通过添加.toString.substring(1)等方式轻松删除。

public void logLocalIpAddresses() {
    Enumeration<NetworkInterface> nwis;
    try {
        nwis = NetworkInterface.getNetworkInterfaces();
        while (nwis.hasMoreElements()) {

            NetworkInterface ni = nwis.nextElement();
            for (InterfaceAddress ia : ni.getInterfaceAddresses())

                Log.i(TAG, String.format("%s: %s/%d", 
                      ni.getDisplayName(), ia.getAddress(), ia.getNetworkPrefixLength()));
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}
相关问题