Android 获取网关的ip、mac(wifi、网线都可用)

最近接触到的新项目需要获取网关的mac信息来进行上报,遂一如既往面向百度和Google编程。无奈呀,找了好久,基本网上说的都是获取自身的ip和mac的,以及获取wifi状态下的网关ip和mac,但是这不够呀,除了自身的ip和mac,我还需要有线状态下的ip和mac。

功夫不负有心人,最终还是被我找到了。可以使用adb shell命令和读取设备保存的相关文件信息来获取到我所需要的

/**
 * 使用adb shell命令来获取网关IP
 * @return
 */
fun getGatewayIp(): String {
    var result = ""
    val order = "ip route list table 0"

    try {
        val exec = Runtime.getRuntime().exec(order)
        val buff = BufferedReader(InputStreamReader(exec.inputStream))

        val str = buff.readLine()
        if (str != null) {
            result = str.trim().split("\\s+".toRegex()).toTypedArray()[2]
        }

        buff.close()
        exec.waitFor()
    } catch (e: Exception) {
        e.printStackTrace()
    }

    return result
}

/**
 * 从保存相关信息的 /proc/net/arp 文件里根据ip获取对应的网关mac
 * @return
 */
fun getGatewayMac(): String {
    var mac = ""
    try {
        val filePath = "/proc/net/arp"
        val buff = BufferedReader(FileReader(filePath))
        while (true) {
            val str = buff.readLine() ?: break
            if (str.contains(getGatewayIp())) {
                mac = str.trim().split("\\s+".toRegex()).toTypedArray()[3]
                break
            }
        }
        buff.close()
    } catch (e: Exception) {
        e.printStackTrace()
    }

    return mac
}

就是如何简单了,至少在我这是可行的,最后再放上原方法的链接https://blog.csdn.net/shaoenxiao/article/details/81285090

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容