我正在应用程序中使用辅助功能服务,以向用户读取自定义文本。这是我的服务类别:
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)
请求帮助!谢谢。
看来您正在调用下面的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)
}
var mService = GlobalAccessibilityService()
您只是无法实例化Service
并期望它能正常工作。 Android框架为您实例化服务。
[对于普通服务,将Intent
与startService()
调用一起使用,但是AccessibilityService
不同。参见How to start AccessibilityService?