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

1
2
3
4
5
6
7
8
9
10
11
12
13
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)