溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android高版本API方法如何在低版本系統(tǒng)上做兼容性處理淺析

發(fā)布時(shí)間:2020-10-22 21:34:13 來源:腳本之家 閱讀:129 作者:YoungTa0 欄目:移動(dòng)開發(fā)

前言

在最近的開發(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 版本更替,新的版本帶來新的特性,新的方法。

新的方法帶來許多便利,但無(wú)法在低版本系統(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ì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI