检查 API29 上的互联网连接

2 java android

我使用以下方法来检查互联网连接:

public boolean isInternetConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();
    return networkInfo != null && networkInfo.isConnected();
}
Run Code Online (Sandbox Code Playgroud)

不过,我发现NetworkInfogetActiveNetworkInfo()、 和isConnected()现在都已弃用。我已经检查了几个线程:

ConnectivityManager getNetworkInfo(int) 已弃用

activeNetworkInfo.type 在 API 级别 28 中已弃用

不过,它们都使用已弃用的方法提供答案。我一直环顾四周,没有任何运气。是否有任何简单的方法来检查互联网连接,或者我应该继续使用我的方法并忽略已弃用的方法,因为它适用于 API29?

谢谢。

Sma*_*ing 7

看看.hasTransport

val networkAvailability = cm.getNetworkCapabilities(cm.activeNetwork)
if(networkAvailability !=null && networkAvailability.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && networkAvailability.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED))
{
    //has network
    if (networkAvailability.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { //wifi
    } else if (networkAvailability.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { //cellular
    }
}
Run Code Online (Sandbox Code Playgroud)