问题
I have written an accessibility service and I want the service to be stopped/killed once it receives an accessibility event (i.e. in method onAccessibilityEvent
). Can this be done? I have tried to kill using kill process as below but it is not working.
unbindService(mSvcConn);
android.os.Process.killProcess(android.os.Process.myPid());
I have given the below permission in AndroidManifest.xml
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
I know that accessibility service cannot be started programmatically but can't it be stopped/killed either?
回答1:
An accessibility service can't remove itself from the list of enabled services or kill its own process without being automatically restarted, but you can call AccessibilityService.setServiceInfo(new AccessibilityServiceInfo())
to effectively turn off your service.
Calling AccessibilityManager.isEnabled()
will still return true, but your service won't receive events.
回答2:
In Android 7.0 (API 24), you can call disableSelf() on the AccessibilityService to disable the service, which also stops it.
来源:https://stackoverflow.com/questions/26301651/can-accessibility-service-be-stopped-or-killed