监听定位开关的时候,在部分手机(应该Android版本较低)上报错如下
09-01 15:51:10.559 17218 17218 E AndroidRuntime: FATAL EXCEPTION: main
09-01 15:51:10.559 17218 17218 E AndroidRuntime: Process: com.watsonfile.autoxxxxwifi, PID: 17218
09-01 15:51:10.559 17218 17218 E AndroidRuntime: java.lang.AbstractMethodError: abstract method "void android.location.LocationListener.onProviderDisabled(java.lang.String)"
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at com.cmcc.autoxxxxwifi.ui.main.MainFragment$locationListener$1.onProviderDisabled(MainFragment.kt:65)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:330)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at android.location.LocationManager$ListenerTransport.-wrap0(LocationManager.java)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at android.location.LocationManager$ListenerTransport$2.handleMessage(LocationManager.java:249)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6463)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1000)
09-01 15:51:10.559 17218 17218 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:890)
原始代码如下
private val locationListener = object: LocationListener {
override fun onLocationChanged(location: Location) {
}
override fun onProviderDisabled(provider: String) {
super.onProviderDisabled(provider)
}
override fun onProviderEnabled(provider: String) {
super.onProviderEnabled(provider)
}
}
解决办法是去掉两个super,即如下
private val locationListener = object: LocationListener {
override fun onLocationChanged(location: Location) {
}
override fun onProviderDisabled(provider: String) {
}
override fun onProviderEnabled(provider: String) {
}
}