美文网首页
Android端信号强度监听,api23?

Android端信号强度监听,api23?

作者: _蘇芳_ | 来源:发表于2019-11-13 11:25 被阅读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)

相关文章

网友评论

      本文标题:Android端信号强度监听,api23?

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