Android如何获取IP和UA

其他教程   发布日期:2023年09月23日   浏览次数:370

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

    获取IP

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

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

    判断网络连接类型

    通过

    1. ConnectivityManager
    判断网络连接类型,代码如下:
    1. private fun checkCurrentNetworkType() {
    2. val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    3. connectivityManager.run {
    4. if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
    5. when (activeNetworkInfo?.type) {
    6. ConnectivityManager.TYPE_MOBILE -> {
    7. // 通过手机流量
    8. }
    9. ConnectivityManager.TYPE_WIFI -> {
    10. // 通过WIFI
    11. }
    12. else -> {}
    13. }
    14. } else {
    15. // Android M 以上建议使用getNetworkCapabilities API
    16. activeNetwork?.let { network ->
    17. getNetworkCapabilities(network)?.let { networkCapabilities ->
    18. if (networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {
    19. when {
    20. networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> {
    21. // 通过手机流量
    22. }
    23. networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> {
    24. // 通过WIFI
    25. }
    26. }
    27. }
    28. }
    29. }
    30. }
    31. }
    32. }

    获取手机卡联网 IP

    通过

    1. NetworkInterface
    获取IPV4地址,代码如下:
    1. NetworkInterface.getNetworkInterfaces().let {
    2. loo@ for (networkInterface in Collections.list(it)) {
    3. for (inetAddresses in Collections.list(networkInterface.inetAddresses)) {
    4. if (!inetAddresses.isLoopbackAddress && !inetAddresses.isLinkLocalAddress) {
    5. // IP地址
    6. val mobileIp = inetAddresses.hostAddress
    7. break@loo
    8. }
    9. }
    10. }
    11. }

    获取WIFI联网 IP

    通过

    1. ConnectivityManager
    1. WifiManager
    来获取IP地址,代码如下:
    1. private fun getWIFIIp() {
    2. if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
    3. val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
    4. // IP 地址
    5. val wifiIp = Formatter.formatIpAddress(wifiManager.connectionInfo.ipAddress)
    6. } else {
    7. // Android Q 以上建议使用getNetworkCapabilities API
    8. val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    9. connectivityManager.run {
    10. activeNetwork?.let { network ->
    11. (getNetworkCapabilities(network)?.transportInfo as? WifiInfo)?.let { wifiInfo ->
    12. // IP 地址
    13. val wifiIp = Formatter.formatIpAddress(wifiInfo.ipAddress)
    14. }
    15. }
    16. }
    17. }
    18. }

    获取UA

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

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

    以上就是Android如何获取IP和UA的详细内容,更多关于Android如何获取IP和UA的资料请关注九品源码其它相关文章!