使用compileSdkVersion 23,但是尝试支持9到9.
getNetworkInfo(int)在23中已弃用.建议改为使用getAllNetworks和getNetworkInfo(Network).然而,这两者都需要最少的API 21.
我们可以在支持包中使用哪个类可以帮助解决这个问题吗?
我知道之前提出了一个解决方案,但是我对9的最小api要求的挑战造成了问题.
networking android android-6.0-marshmallow android-connectivitymanager
什么区别RequiresApi
和TargetApi
?
kotlin中的样本:
@RequiresApi(api = Build.VERSION_CODES.M)
@TargetApi(Build.VERSION_CODES.M)
class FingerprintHandlerM() : FingerprintManager.AuthenticationCallback()
Run Code Online (Sandbox Code Playgroud)
注意:FingerprintManager.AuthenticationCallback
需要apiM
注2:如果我不使用TargetApi lint失败并出错 class requires api level 23...
在替换此已弃用的代码以检查设备上的互联网连接时,有人可以为我指出正确的方向吗?
private val isNetworkAvailable = MutableStateFlow(false)
fun checkNetworkAvailability(context: Context): MutableStateFlow<Boolean> {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
connectivityManager.registerDefaultNetworkCallback(this)
var isConnected = false
// allNetworks Deprecated
connectivityManager.allNetworks.forEach { network ->
val networkCapability = connectivityManager.getNetworkCapabilities(network)
networkCapability?.let {
if(it.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
isConnected = true
return@forEach
}
}
}
isNetworkAvailable.value = isConnected
return isNetworkAvailable
}
Run Code Online (Sandbox Code Playgroud)