美文网首页
abstract method "void android.lo

abstract method "void android.lo

作者: 祥龙翔天 | 来源:发表于2022-09-01 16:16 被阅读0次

    监听定位开关的时候,在部分手机(应该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) {
            }
        }
    

    相关文章

      网友评论

          本文标题:abstract method "void android.lo

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