我想以编程方式启用/禁用“设置”->“辅助功能选项”下列出的辅助功能服务。
我可以像下面这样开始辅助功能意图:
Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivityForResult(intent, 0);
但是我不知道如何通过我的代码启用视图中列出的服务。
请给我提供你的观点。
发布于 2015-01-29 16:24:09
我发现一个解决方案对我很有效,方法是
Settings.Secure.putString(getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, "pkgname/classname");
Settings.Secure.putString(getContentResolver(),
Settings.Secure.ACCESSIBILITY_ENABLED, "1");
其中pkgname
是您的包名,classname
是您的辅助功能服务的类名。
如果您需要启用多个服务,或者您不想销毁以前的设置,那么您可能希望使用:
来分离其他服务。
此外,您可能需要以system应用程序的身份运行,并且可能需要以下权限
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
然而,根据@Rupert Rawnsley的说法,这可能在某些版本的安卓上不起作用,我正在安卓4.0.4上工作,希望它能为你工作。
PS。如果它不能工作,也许你可以在/data/data/com.android.providers.settings/databases/settings.db/secure
找到一些运气,这是Android存储安全设置的地方。
发布于 2016-08-14 13:01:37
在Android 6.0中,您可以使用:
adb shell settings put secure enabled_accessibility_services packagname/servicename
旧版本中的settings.db不再出现在Android6.0上。
发布于 2016-11-07 17:10:39
在Android7(API24)中,AccessibilityService可以通过调用disableSelf()方法以编程方式禁用自身。
https://stackoverflow.com/questions/10061154
复制相似问题