最近把項目升級到Android Q了,發(fā)現(xiàn)不少api都已經(jīng)被Google標(biāo)注為@Deprecated了,于是對部分API進(jìn)行了適配氛魁。
適配完的方法每次在編譯打包時依然還會報警告:
警告: [deprecation] ConnectivityManager中的TYPE_WIFI已過時
這個時候可以在app/build.gradle中設(shè)置:
android {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
下次再編譯就不會出現(xiàn)之前優(yōu)化過的那些提示了廊鸥,目前我是這樣搞的,如有不對歡迎指正伤锚。
一、網(wǎng)絡(luò)狀態(tài)
指示網(wǎng)絡(luò)的連接方式包括如下狀態(tài):
*TRANSPORT_CELLULAR(蜂窩網(wǎng)絡(luò)) & TRANSPORT_WIFI & TRANSPORT_BLUETOOTH & TRANSPORT_ETHERNET & TRANSPORT_VPN & TRANSPORT_WIFI_AWARE & TRANSPORT_LOWPAN
*過時API:NetworkInfo類志衣,全文方法陣亡
1.對手機當(dāng)前是否連接網(wǎng)絡(luò)進(jìn)行優(yōu)化
/**
* 當(dāng)前是否連接網(wǎng)絡(luò)
*/
fun isNetworkConnected(): Boolean {
val connectivityManager =
this.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val networkCapabilities: NetworkCapabilities? =
connectivityManager?.getNetworkCapabilities(connectivityManager.activeNetwork)
if (networkCapabilities != null) {
networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
&& networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
} else {
false
}
} else {
val networkInfo = connectivityManager?.activeNetworkInfo as NetworkInfo
networkInfo.isConnected && networkInfo.isAvailable
}
}
2.當(dāng)前使用的是蜂窩網(wǎng)絡(luò)還是WIFI等相關(guān)方法進(jìn)行了優(yōu)化(Bluetooth等可自行修改)
/**
* 當(dāng)前使用WIFI連接網(wǎng)絡(luò)
*/
fun currentNetWorkStatusIsWifi(): Boolean {
val systemService =
this.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val networkCapabilities: NetworkCapabilities? =
systemService?.getNetworkCapabilities(systemService.activeNetwork)
if (networkCapabilities != null) {
networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) &&
networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) &&
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
} else {
false
}
} else {
val networkInfo = systemService?.activeNetworkInfo as NetworkInfo
networkInfo.isConnected && networkInfo.type == ConnectivityManager.TYPE_WIFI
}
}
/**
* 當(dāng)前使用蜂窩網(wǎng)絡(luò)連接網(wǎng)絡(luò)
*/
fun currentNetWorkStatusIsCelluLar(): Boolean {
val connectivityManager =
this.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val networkCapabilities: NetworkCapabilities? =
connectivityManager?.getNetworkCapabilities(connectivityManager.activeNetwork)
if (networkCapabilities != null) {
networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
&& networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
&& networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
} else {
false
}
} else {
val networkInfo = connectivityManager?.activeNetworkInfo as NetworkInfo
networkInfo.isConnected && networkInfo.type == ConnectivityManager.TYPE_MOBILE
}
}
最近事兒太多屯援,等手上事情忙完了再更新哈,先給個美女圖你們看下:
美女