簡體   English   中英

Android 獲取 Wifi 連接狀態

[英]Android Get Status of Wifi Connection

我目前正在使用NetworkRequestNetworkCallback方法(由 Google 官方推薦)來獲取 Wifi 連接的狀態,並且它可以部分工作。

我希望onUnavailable()會在以下情況下被調用: close app -> turn off Wifi -> launch app ,但是什么也沒發生:

private fun getNetworkRequest(): NetworkRequest {
    return NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)    //restric to Wifi type only
        .build()
}

private fun getNetworkCallBack(): ConnectivityManager.NetworkCallback {
    return object : ConnectivityManager.NetworkCallback() {
        override fun onAvailable(network: Network) {            //works
            super.onAvailable(network)

            Toast.makeText(requireContext(), "Wifi is on!", Toast.LENGTH_SHORT).show()
        }

        override fun onLost(network: Network) {                 //works
            super.onLost(network)

            Toast.makeText(requireContext(), "Wifi turns off!", Toast.LENGTH_SHORT).show()
        }

        override fun onUnavailable() {                          //not works as expected
            super.onUnavailable()

            Toast.makeText(requireContext(), "Wifi unavailable!", Toast.LENGTH_SHORT).show()
        }
    }
}

fun Fragment.getConnectivityManager() = requireContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

override fun onResume() {
    super.onResume()

    getConnectivityManager().registerNetworkCallback(networkRequest, networkCallback)
}

好的,我得到了解決方案:

val isWifiOn = with(getConnectivityManager()) {
    getNetworkCapabilities(activeNetwork)?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
}

演示: https://youtu.be/OHFrtXVW4x4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM