abstract method "void android.location.LocationListener.onProviderD...

监听定位开关的时候,在部分手机(应该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) {
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容