Android端信号强度监听,api23?

2019-11-13  本文已影响0人  _蘇芳_

onSignalStrengthChanged()已经过期,但是监听PhoneStateListener.LISTEN_SIGNAL_STRENGTHS的话,使用signalStrength.level()又会提示需要api23。
其实getLevel()方法并不是api23新加的,只是之前是hide方法。如下所示,用反射拿出来即可。
同学们也可自行加入版本判断。

        val service1 = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
        service1.listen(object:PhoneStateListener(){
            override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
                super.onSignalStrengthsChanged(signalStrength)
                val javaClass = signalStrength.javaClass
                val method = javaClass.getDeclaredMethod("getLevel")
                if (method != null) {
                    method.isAccessible = true
                    val invoke = method.invoke(signalStrength)
                    LogUtils.d("invoke:$invoke")
                }
            }
        },PhoneStateListener.LISTEN_SIGNAL_STRENGTHS)
上一篇 下一篇

猜你喜欢

热点阅读