繁体   English   中英

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

[英]find local network address in Android - including IP and NetMask? (ethernet not wifi)

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

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

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

我知道可以通过WifiManager.getDhcpInfo()在WiFi中完成此操作-但我对以太网感兴趣-甚至更好的通用方法。

这是一种获取掩码的方法,也就是网络前缀长度。 最小的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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM