• android 代码设置静态Ip地址的方法


     在Android中,可以使用以下代码示例来设置静态IP地址:
    import android.content.Context
    import android.net.ConnectivityManager
    import android.net.LinkAddress
    import android.net.Network
    import android.net.NetworkCapabilities
    import android.net.NetworkRequest
    import android.os.Build
    import androidx.annotation.RequiresApi

    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    fun setStaticIp(context: Context, ipAddress: String, subnetMask: Int, gateway: String, dns1: String, dns2: String) {
        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

        val networkRequest = NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .build()

        val networkCallback = object : ConnectivityManager.NetworkCallback() {
            override fun onAvailable(network: Network) {
                super.onAvailable(network)

                val linkProperties = connectivityManager.getLinkProperties(network)
                if (linkProperties != null) {
                    // 设置静态IP地址
                    val staticIpConfig = linkProperties.createStaticIpConfiguration()

                    val ipAddr = LinkAddress(ipAddress, subnetMask)
                    staticIpConfig.ipAddress = ipAddr

                    staticIpConfig.gateway = InetAddress.getByName(gateway)

                    val dns1Addr = InetAddress.getByName(dns1)
                    staticIpConfig.dnsServers.add(dns1Addr)

                    val dns2Addr = InetAddress.getByName(dns2)
                    staticIpConfig.dnsServers.add(dns2Addr)

                    linkProperties.staticIpConfiguration = staticIpConfig

                    // 更新网络连接属性
                    connectivityManager.updateLinkProperties(network, linkProperties)
                }
            }
        }

        connectivityManager.requestNetwork(networkRequest, networkCallback)
    }

    使用示例:
    val ipAddress = "192.168.1.100"
    val subnetMask = 24
    val gateway = "192.168.1.1"
    val dns1 = "8.8.8.8"
    val dns2 = "8.8.4.4"

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        setStaticIp(context, ipAddress, subnetMask, gateway, dns1, dns2)
    } else {
        // 版本低于Android 5.0,不支持设置静态IP地址
    }

    请注意,设置静态IP地址的功能要求Android设备的API级别必须为21(Android 5.0)或更高版本。
    此外,需要在AndroidManifest.xml文件中添加以下权限:

    请确保在使用此代码时,替换示例中的IP地址、子网掩码、网关和DNS服务器地址为实际的值。

  • 相关阅读:
    亚微米聚苯乙烯微球乳化剂β-环糊精/表面接枝β环糊精聚苯乙烯纤维的制备过程
    微服务实战系列之云原生
    引用类型的按值传递
    【Redis】Redis Cluster-集群故障转移
    解决Kibana初始化失败报错: Unable to connect to Elasticsearch
    差分(前缀和的逆运算)
    进程地址空间详解
    熵 熵的简单理解和实例
    var、let、const关键字的特性,以及let、const暂时性死区的作用
    凌恩生物文献分享 | 癌症领域新曙光——肿瘤内微生物
  • 原文地址:https://blog.csdn.net/qq_23275523/article/details/133704281