获取连接WIFI的名称

462 阅读1分钟

有一个需求,就是要显示连接WIFI的名称。特地记录一下。

1、权限申请:定位权限和WIFI状态访问权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!--访问位置权限-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><!--更改wifi状态权限-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--访问wifi状态权限-->

2、开启权限并获取连接wifi名称

fun getConnectWifiSsid(context: Context): String {
    var ssid = ""
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { //android12以上监听修改wifi
        val request = NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .build()
        val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkCallback = object : ConnectivityManager.NetworkCallback(FLAG_INCLUDE_LOCATION_INFO) {
            override fun onCapabilitiesChanged(
                network: Network,
                networkCapabilities: NetworkCapabilities
            ) {
                val wifiInfo = networkCapabilities.transportInfo as WifiInfo
                ssid = wifiInfo.ssid.replace(""", "").replace("<", "").replace(">", "")
                super.onCapabilitiesChanged(network, networkCapabilities)
                connectivityManager.unregisterNetworkCallback(this)
            }
        }
        connectivityManager.registerNetworkCallback(request, networkCallback)
    } else { //android12以下定时获取当前wifi信息
        val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
        @Suppress("DEPRECATION") val wifiInfo = wifiManager.connectionInfo
        ssid = wifiInfo.ssid.replace(""", "").replace("<", "").replace(">", "")
    }
    return ssid
}

12以下试过没问题,12以上还没有测试过。