我在我的应用程序中使用了可访问性服务来向用户读出自定义文本。这是我的服务类:
class GlobalAccessibilityService: AccessibilityService() {
override fun onInterrupt() {
Log.i("Accessibility","onInterrupt()")
}
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
Log.i("Accessibility","onAccessibilityEvent() & Even is: "+event.toString())
}
}我已经在Manifest的Service tag下声明了它,并有相应的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)请求帮助!谢谢。
发布于 2020-06-15 12:23:03
看起来你在调用下面写的在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)
}发布于 2020-06-15 14:21:50
变量mService = GlobalAccessibilityService()
你不能实例化一个Service并期望它能工作。Android框架为您实例化服务。
对于正常的服务,可以使用带有startService()调用的Intent,但是AccessibilityService是不同的。请参阅How to start AccessibilityService?
https://stackoverflow.com/questions/62378583
复制相似问题