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)
网友评论