2014-10-10 110 views
1

我已经编写了一个辅助功能服务,并且我希望一旦它接收到一个辅助功能事件(即在方法onAccessibilityEvent中),就会停止/终止该服务。这可以做到吗?我试图杀死使用杀死进程如下,但它不工作。无障碍服务可以停止还是被杀死?

unbindService(mSvcConn);
android.os.Process.killProcess(android.os.Process.myPid());

我已经给下面的权限在AndroidManifest.xml

我知道,无障碍服务不能以编程方式开始,但无法将其停止/被杀要么?

+0

pradeep 2014-10-10 14:22:42

回答

4

无障碍服务无法从启用的服务列表中删除自己,或者在不自动重新启动的情况下终止自己的进程,但是您可以调用AccessibilityService.setServiceInfo(new AccessibilityServiceInfo())以有效关闭服务。

调用AccessibilityManager.isEnabled()仍然会返回true,但您的服务不会收到事件。

+0

感谢Alanv的回复。您的回复似乎回答了我的问题,但我唯一担心的是该服务在没有执行任何任务时正在运行。此外,当手机重新启动时,无障碍服务似乎又开始了。任何想法如何我们可以避免在手机重新启动时重新启动此服务? – pradeep 2014-10-14 07:32:37

+1

您可以提示用户禁用该服务。实际上完全禁用服务(例如,禁用组件)有一些黑客方法,但它们会导致比他们的价值更大的麻烦。 – alanv 2014-10-14 20:49:09

0

在Android 7.0(API 24)中,您可以在AccessibilityService上调用disableSelf()来禁用服务,该服务也会停止服务。

相关问题