Android 获取IP和UA实现示例详解
作者:ChenYhong
这篇文章主要为大家介绍了Android 获取IP和UA实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
获取IP
最近接入了一个新的SDK,初始化接口需要传入当前设备的IP和UA作为参数。本文介绍如何获取设备的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
通过ConnectivityManager
或WifiManager
来获取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)
示例
在示例Demo中添加了相关的演示代码。
效果如图:
以上就是Android 获取IP和UA实现示例详解的详细内容,更多关于Android 获取IP和UA的资料请关注脚本之家其它相关文章!