美文网首页Android开发Android开发Android开发经验谈
Android 高版本API方法在低版本系统上的兼容性处理

Android 高版本API方法在低版本系统上的兼容性处理

作者: YoungTa0 | 来源:发表于2018-08-14 17:47 被阅读14次

    前言

    在最近的开发中需要获取到SIM卡的网络状态,在源码中看到一个方法:

    TelephonyManager tm =(TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);
    state =tm.getDataNetworkType();
    

    但是报错了Call requires API level 24 (current min is 21): android.telephony.TelephonyManager#getDataNetworkType

    Android 版本更替,新的版本带来新的特性,新的方法。
    新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash。

    处理方法

    1.添加@RequiresApi(api = Build.VERSION_CODES.N)
    2.添加@TargetApi(Build.VERSION_CODES.N)
    3.添加@SuppressLint("NewApi")
    4.添加运行时SDK版本判断

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                tm.getDataNetworkType();
            }
    

    5.在低版本通过其他方法实现该功能

    总结

    第一、第二、第三种方法只是能编译通过,到了低于API24的系统运行,将会引发 java.lang.NoSuchMethodError。
    正确的做法是添加运行时SDK版本判断,判断为低版本时添加其他方法实现该功能

    相关文章

      网友评论

        本文标题:Android 高版本API方法在低版本系统上的兼容性处理

        本文链接:https://www.haomeiwen.com/subject/cygvbftx.html