溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Android如何獲取IP和UA

發(fā)布時(shí)間:2023-03-21 14:53:40 來(lái)源:億速云 閱讀:205 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“Android如何獲取IP和UA”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Android如何獲取IP和UA”吧!

    獲取IP

    最近接入了一個(gè)新的SDK,初始化接口需要傳入當(dāng)前設(shè)備的IP和UA作為參數(shù)。

    使用WIFI聯(lián)網(wǎng)與不使用WIFI,獲取到的IP地址不同。因此,需要先判斷當(dāng)前設(shè)備通過(guò)哪種方式聯(lián)網(wǎng),然后再獲取對(duì)應(yīng)的IP地址。

    判斷網(wǎng)絡(luò)連接類(lèi)型

    通過(guò)ConnectivityManager判斷網(wǎng)絡(luò)連接類(lèi)型,代碼如下:

    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 -> {
                        // 通過(guò)手機(jī)流量
                    }
                    ConnectivityManager.TYPE_WIFI -> {
                        // 通過(guò)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) -> {
                                    // 通過(guò)手機(jī)流量
                                }
                                networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> {
                                    // 通過(guò)WIFI
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    獲取手機(jī)卡聯(lián)網(wǎng) IP

    通過(guò)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聯(lián)網(wǎng) IP

    通過(guò)ConnectivityManagerWifiManager來(lái)獲取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

    獲取設(shè)備的UserAgent比較簡(jiǎn)單,代碼如下:

    // 系統(tǒng) UA
    System.getProperty("http.agent")
    // WebView UA
    WebSettings.getDefaultUserAgent(context)

    到此,相信大家對(duì)“Android如何獲取IP和UA”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI