前言
站在用戶的角度思考問題,與客戶深入溝通,找到溫縣網(wǎng)站設(shè)計(jì)與溫縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋溫縣地區(qū)。
在最近的開發(fā)中需要獲取到SIM卡的網(wǎng)絡(luò)狀態(tài),在源碼中看到一個(gè)方法:
TelephonyManager tm =(TelephonyManager)context.getSystemService(TELEPHONY_SERVICE); state =tm.getDataNetworkType();
但是報(bào)錯(cuò)了Call requires API level 24 (current min is 21): android.telephony.TelephonyManager#getDataNetworkType
Android 版本更替,新的版本帶來新的特性,新的方法。
新的方法帶來許多便利,但無法在低版本系統(tǒng)上運(yùn)行,如果兼容性處理不恰當(dāng),APP在低版本系統(tǒng)上,運(yùn)行時(shí)將會(huì)crash。
處理方法
1.添加@RequiresApi(api = Build.VERSION_CODES.N)
2.添加@TargetApi(Build.VERSION_CODES.N)
3.添加@SuppressLint("NewApi")
4.添加運(yùn)行時(shí)SDK版本判斷
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { tm.getDataNetworkType(); }
5.在低版本通過其他方法實(shí)現(xiàn)該功能
總結(jié)
第一、第二、第三種方法只是能編譯通過,到了低于API24的系統(tǒng)運(yùn)行,將會(huì)引發(fā) java.lang.NoSuchMethodError
。
正確的做法是添加運(yùn)行時(shí)SDK版本判斷,判斷為低版本時(shí)添加其他方法實(shí)現(xiàn)該功能
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。