我想以編程方式啓用/禁用在設置 - >輔助功能選項下列出的輔助功能服務。如何以編程方式在Android中啓用/禁用輔助功能服務
我可以開始輔助意向象下面這樣:
Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivityForResult(intent, 0);
但我沒有關於如何啓用通過我的代碼視圖中列出的服務的想法。
請給我你的意見。
我想以編程方式啓用/禁用在設置 - >輔助功能選項下列出的輔助功能服務。如何以編程方式在Android中啓用/禁用輔助功能服務
我可以開始輔助意向象下面這樣:
Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivityForResult(intent, 0);
但我沒有關於如何啓用通過我的代碼視圖中列出的服務的想法。
請給我你的意見。
我發現這個職位:How to programmatically check if a service is declared in AndroidManifest.xml?。最重要的答案是關於PackageManager,它告訴你正在運行的是什麼。
AccessibilityService是特殊的,不能以編程方式啓動。
你能做的就是manualy打開與平易設置的最佳:
意向意圖=新意圖(Settings.ACTION_ACCESSIBILITY_SETTINGS)
,並啓動意圖 - 你也可以做到這一點從該prefernece xml文件:
意圖機器人:行動= 「android.settings.ACCESSIBILITY_SETTINGS」
是否可以直接進入具有切換功能的特定應用程序屏幕? – 2017-05-16 13:03:39
我找到了解決方案,通過調用
Settings.Secure.putString(getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, "pkgname/classname");
Settings.Secure.putString(getContentResolver(),
Settings.Secure.ACCESSIBILITY_ENABLED, "1");
凡pkgname
是你的包名和classname
是您的無障礙服務的類名稱爲我工作。
如果您需要啓用多項服務,或者您不想破壞先前的設置,則可能需要使用:
來分隔其他服務。
你也可能需要作爲系統應用運行,您可能需要以下權限
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
然而,根據@Rupert Rawnsley這可能不是在Android的某些版本的工作,我的工作在Android 4.0.4,並希望它適合你。
PS。如果它不起作用,也許你可以在/data/data/com.android.providers.settings/databases/settings.db/secure
找到一些運氣,這就是Android存儲安全設置的地方。
從在Android 6.0,你可以使用:
adb shell settings put secure enabled_accessibility_services packagname/servicename
的settings.db從舊版本不再出現在Android 6.0。
即使在android 7上它也能工作嗎?另外,如何通過adb啓用使用權限? – 2016-10-03 07:06:48
OP是關於如何以編程方式啓用/禁用不使用adb shell的輔助功能服務 – developer1011 2018-02-27 09:12:46
在Android 7(API 24)中,AccessibilityService可以通過調用disableSelf()方法以編程方式禁用自身。
只是在以下情況下仍然要求關閉當您卡在鎖定屏幕輸入密碼或PIN時,從adb對講。你可以嘗試的一件事是adb shell am force-stop com.google.android.marvin.talkback
從[this](http://stackoverflow.com/questions/5081145/android-how-do-you-check-if-a-particular-accessibilityservice-is-enabled/5106419 #5106419),啓用的AccessibilityService作爲String存儲在'Settings.Secure.getString(getContentResolver(),Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES)'中。一旦應用程序具有系統特權,是否可以通過遵循字符串格式啓用AccessibilityService並調用'Settings.Secure.putString(...)'? – Yeung 2014-06-30 10:01:25
@Yeung原則上,但在實踐中,我發現這取決於Android和設備的版本。控制Accessibility Services的過程並不總是在不重新啓動的情況下看到這些更改。在我們的應用程序中,我們將用戶引導至設置頁面並讓他們爲我們啓用服務。 – 2014-06-30 10:23:26
@Yeung Settings.Secure.putString(...)僅適用於系統應用程序。對於其他應用程序,Android不允許以編程方式打開輔助功能服務 – Kushal 2015-03-12 08:20:50