您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Android如何獲取IP和UA”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Android如何獲取IP和UA”吧!
最近接入了一個(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地址。
通過(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 } } } } } } } }
通過(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 } } } }
通過(guò)ConnectivityManager
或WifiManager
來(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) } } } } }
獲取設(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í)!
免責(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)容。