java.lang.IllegalStateException:android.accessibilityservice.AccessibilityService.getSystemService(AccessibilityService.java:1602)

问题描述 投票:0回答:2

我正在应用程序中使用辅助功能服务,以向用户读取自定义文本。这是我的服务类别:

class GlobalAccessibilityService: AccessibilityService() {
    override fun onInterrupt() {
        Log.i("Accessibility","onInterrupt()")
    }

    override fun onAccessibilityEvent(event: AccessibilityEvent?) {
        Log.i("Accessibility","onAccessibilityEvent() & Even is: "+event.toString())
    }
}

而且我已经在清单中的Service标签下声明了它,并且也有相应的xml文件。

这是我在Activity类中调用服务的方式:




     var mService = GlobalAccessibilityService()

       var manager: AccessibilityManager = mService.getSystemService(Context.ACCESSIBILITY_SERVICE) 

                    if (manager.isEnabled){
                        var event: AccessibilityEvent = AccessibilityEvent.obtain()
                        event.eventType = AccessibilityEvent.TYPE_ANNOUNCEMENT
                        event.text.add("This is a test for Accessibility Service Announcement")
                        manager.sendAccessibilityEvent(event)
                    }

但是,出现以下错误:


     java.lang.IllegalStateException: System services not available to Activities before onCreate()
            at android.accessibilityservice.AccessibilityService.getSystemService(AccessibilityService.java:1602)

请求帮助!谢谢。

java android kotlin accessibilityservice
2个回答
0
投票

看来您正在调用下面的onCreate()方法之前的代码。您在哪里称这些以下代码? :

var mService = GlobalAccessibilityService()

   var manager: AccessibilityManager = mService.getSystemService(Context.ACCESSIBILITY_SERVICE) 

                if (manager.isEnabled){
                    var event: AccessibilityEvent = AccessibilityEvent.obtain()
                    event.eventType = AccessibilityEvent.TYPE_ANNOUNCEMENT
                    event.text.add("This is a test for Accessibility Service Announcement")
                    manager.sendAccessibilityEvent(event)
                }

0
投票
 var mService = GlobalAccessibilityService()

您只是无法实例化Service并期望它能正常工作。 Android框架为您实例化服务。

[对于普通服务,将IntentstartService()调用一起使用,但是AccessibilityService不同。参见How to start AccessibilityService?

© www.soinside.com 2019 - 2024. All rights reserved.