温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android如何获取IP和UA

发布时间:2023-03-21 14:53:40 来源:亿速云 阅读:215 作者:iii 栏目:开发技术

本篇内容主要讲解“Android如何获取IP和UA”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何获取IP和UA”吧!

    获取IP

    最近接入了一个新的SDK,初始化接口需要传入当前设备的IP和UA作为参数。

    使用WIFI联网与不使用WIFI,获取到的IP地址不同。因此,需要先判断当前设备通过哪种方式联网,然后再获取对应的IP地址。

    判断网络连接类型

    通过ConnectivityManager判断网络连接类型,代码如下:

    private fun checkCurrentNetworkType() {
        val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        connectivityManager.run {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                when (activeNetworkInfo?.type) {
                    ConnectivityManager.TYPE_MOBILE -> {
                        // 通过手机流量
                    }
                    ConnectivityManager.TYPE_WIFI -> {
                        // 通过WIFI
                    }
                    else -> {}
                }
            } else {
                // Android M 以上建议使用getNetworkCapabilities API
                activeNetwork?.let { network ->
                    getNetworkCapabilities(network)?.let { networkCapabilities ->
                        if (networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {
                            when {
                                networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> {
                                    // 通过手机流量
                                }
                                networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> {
                                    // 通过WIFI
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    获取手机卡联网 IP

    通过NetworkInterface获取IPV4地址,代码如下:

    NetworkInterface.getNetworkInterfaces().let {
        loo@ for (networkInterface in Collections.list(it)) {
            for (inetAddresses in Collections.list(networkInterface.inetAddresses)) {
                if (!inetAddresses.isLoopbackAddress && !inetAddresses.isLinkLocalAddress) {
                    // IP地址
                    val mobileIp = inetAddresses.hostAddress
                    break@loo
                }
            }
        }
    }

    获取WIFI联网 IP

    通过ConnectivityManagerWifiManager来获取IP地址,代码如下:

    private fun getWIFIIp() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
            val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
            // IP 地址
            val wifiIp = Formatter.formatIpAddress(wifiManager.connectionInfo.ipAddress)
        } else {
            // Android Q 以上建议使用getNetworkCapabilities API
            val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            connectivityManager.run {
                activeNetwork?.let { network ->
                    (getNetworkCapabilities(network)?.transportInfo as? WifiInfo)?.let { wifiInfo ->
                        // IP 地址
                        val wifiIp = Formatter.formatIpAddress(wifiInfo.ipAddress)
                    }
                }
            }
        }
    }

    获取UA

    获取设备的UserAgent比较简单,代码如下:

    // 系统 UA
    System.getProperty("http.agent")
    // WebView UA
    WebSettings.getDefaultUserAgent(context)

    到此,相信大家对“Android如何获取IP和UA”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI