我有一个应用程序,目标是Android 8.0 (API Level 26 - Oreo)到Android 10.0 (API Level 29 - Q),以下代码已经折旧:
ConnectivityManager connectivityManager = (ConnectivityManager)GetSystemService(ConnectivityService);
NetworkInfo activeConnection = connectivityManager.ActiveNetworkInfo;
bool isOnline = (activeConnection != null) && activeConnection.IsConnected;如果NetworkInfo和任何与它相关的东西都折旧了,我该用什么来代替它呢?我一整天都在研究这个问题,我看到的每个建议都使用了被贬低的功能(而且是用java编写的,这对我来说完全是个谜)。所以请不要告诉我这是某个地方已经发布的问题的副本,它不是。另外,如果你提供代码,请使用c#。
发布于 2020-03-10 08:05:11
虽然代码是用Kotlin编写的,但我希望您能理解另一种选择。
fun isConnectedToTheInternet(): Boolean {
val cm = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
cm.run {
cm.getNetworkCapabilities(cm.activeNetwork)?.run {
return when {
hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
}
}
} else {
cm.run {
cm.activeNetworkInfo?.run {
if (type == ConnectivityManager.TYPE_WIFI) {
return true
} else if (type == ConnectivityManager.TYPE_MOBILE) {
return true
}
}
}
}
return false
}发布于 2020-03-10 17:50:41
如果它能帮助你,或者如果有人能把这段代码转换成C#。
这段代码是Kotlin中的折旧函数,并且是。
private fun isInternetConnection(): Boolean {
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val capability = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
return capability?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) ?: false
}希望能帮到你
https://stackoverflow.com/questions/60609598
复制相似问题