Abi*_*ash 26 service android accessibility
我想以编程方式启用/禁用"设置 - >辅助功能"选项下列出的辅助功能服务.
我可以像下面一样启动Accessibility Intent:
Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivityForResult(intent, 0);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何通过我的代码启用视图中列出的服务.
请给我你的看法.
Kev*_*vin 18
我通过电话找到了一个解决方案
Settings.Secure.putString(getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, "pkgname/classname");
Settings.Secure.putString(getContentResolver(),
Settings.Secure.ACCESSIBILITY_ENABLED, "1");
Run Code Online (Sandbox Code Playgroud)
当pkgname
是你的包名和classname
为您的辅助服务的类名.
如果您需要启用多个服务,或者您不希望破坏以前的设置,则可能需要使用:
这些服务来分离其他服务.
此外,您可能需要作为系统应用程序运行,并且可能需要以下权限
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
但是,根据@Rupert Rawnsley的说法,这可能不适用于某些版本的Android,我正在使用Android 4.0.4并希望它适合你.
PS.如果它不起作用,也许你可以找到一些运气/data/data/com.android.providers.settings/databases/settings.db/secure
,这是Android存储安全设置的地方.
小智 8
从Android 6.0开始,您可以使用:
adb shell settings put secure enabled_accessibility_services packagname/servicename
Run Code Online (Sandbox Code Playgroud)
Android 6.0上不再提供旧版本中的settings.db.
在Android 7(API 24)中,AccessibilityService可以通过调用disableSelf()方法以编程方式禁用自身.
最好的办法是使用以下方法手动打开辅助功能设置:
意向意向=新意向(Settings.ACTION_ACCESSIBILITY_SETTINGS)
并启动意图-您也可以从prefernece xml文件中进行操作:
意向android:action =“ android.settings.ACCESSIBILITY_SETTINGS”
Rya*_*n B -7
我找到了这篇文章:How to programmatically check if a service is returned in AndroidManifest.xml? 。最上面的答案谈到了 PackageManager,它告诉您正在运行的内容。
归档时间: |
|
查看次数: |
43283 次 |
最近记录: |