Ich versuche, einen einfachen Barrierefreiheitsdienst wie Google Voice Access oder Button Mapper auf einem LG Exalt LTE zum Laufen zu bringen, auf dem eine abgespeckte Version von Marshmellow ausgeführt wird. Dem Bestand fehlen viele UI-Komponenten, einschließlich Systemeinstellungen für die Barrierefreiheit, die normalerweise zum Ein- oder Ausschalten von Barrierefreiheitsdiensten verwendet werden. Ich würde gerne wissen, ob es möglich ist, das Fehlen von UI mit ADB zu kompensieren. Ich habe Folgendes versucht: Installieren Sie die App (z. B. Take Button Mapper). Ihr Manifest deklariert einige Berechtigungen, die ich gewährt habe, sagen wir:
<uses-permission name="android.permission.WRITE_SECURE_SETTINGS" />
wurde zugesichertadb shell pm grant package.name.here android.permission.WRITE_SECURE_SETTINGS
Ich habe es sogar gegebenandroid.permission.WRITE_SECURE_SETTINGS
obwohl es nicht in der Berechtigungsliste oben im Manifest deklariert ist. Ich bekomme diesen Fehler:Operation not allowed: java.lang.SecurityException: Package package.name.here has not requested permission android.permission.BIND_ACCESSIBILITY_SERVICE
Allerdings ist es hier im Manifest deklariert:
<service name="a.i" permission="android.permission.BIND_ACCESSIBILITY_SERVICE" stopWithTask="true">
<meta-data name="android.accessibilityservice" resource="res/xml/accessibility.xml" />
<intent-filter>
<action name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
und da liegt das problem. Dies ist der Dienst selbst und erfordert eine nicht paketweite Berechtigung, BIND_ACCESSIBILITY_SERVICE
.
wenn ich es mit ADB so starteadb shell am startservice -n package.name.here/a.i
Ich bekomme und FehlerError: Requires permission android.permission.BIND_ACCESSIBILITY_SERVICE
obwohl ich dem Paket bereits die Erlaubnis erteilt habe.
Ich habe es sogar versucht adb shell settings put secure enabled_accessibility_services package.name.here/.a.i
, bekomme aber immer noch den gleichen Fehler.
Wie starte ich einen Dienst und erteile diesem Dienst mit ADB Berechtigungen? Deutlich sein. Ich weiß bereits, dass ich verwenden kann, adb shell pm grant
um dem gesamten Paket eine Berechtigung zu erteilen, aber in diesem Fall ist es eine Berechtigung, die nicht für das gesamte Paket erforderlich ist, es wird in einer bestimmten Komponente deklariert, und ich weiß nicht, wie ich die Komponente mit starten soll die erforderlichen Berechtigungen über ADB.
Ich glaube, ich habe es herausgefunden. Ich verwende Voice Access als Beispiel-App.
adb shell am startservice com.android.cts.apps.accessibility.voiceaccess/com.google.android.apps.accessibility.voiceaccess.JustSpeakService
Nächste
adb shell settings put secure enabled_accessibility_services com.android.cts.apps.accessibility.voiceaccess/com.google.android.apps.accessibility.voiceaccess.JustSpeakService
Dann
adb shell settings put secure accessibility_enabled 1
Löschen Sie abschließend die Auslese-App, damit die Barrierefreiheitsfunktionen nicht überschrieben werden
adb shell pm uninstall -k --user 0 com.lge.voicecommand
Ich denke nicht, dass es danach irgendwelche Fehler geben sollte, hinterlasse einen Kommentar, wenn es welche gibt.
adb shell settings put secure enabled_accessibility_services pkg1/serv1:pkg2/serv2
sh7411usa
Irfan Latif
pm
ähnlichen Berechtigungen mit gefährlicher Schutzstufe gewährt werden kann. Aber es kann Paketen gewährt werden, die danach fragen, indem sie Folgendes verwenden:appops set <pkg> BIND_ACCESSIBILITY_SERVICE allow
. Wenn nur eine Komponente (Dienst) danach fragt, sollte das, was Sie erwähnt haben, funktionieren:settings put secure enabled_accessibility_services <pkg1>/<service 1>:<pkg2>/<service2>:...
. Das passiert, wenn Sie Apps über die GUI-Einstellungen zulassen.Irfan Latif
sh7411usa
$ adb shell am kill flar2.homebutton $ adb shell appops set flar2.homebutton BIND_ACCESSIBILITY_SERVICE allow Error: Unknown operation string: BIND_ACCESSIBILITY_SERVICE $ adb shell settings put secure enabled_accessibility_services flar2.homebutton/a.i $ adb shell am startservice -n flar2.homebutton/a.i Starting service: Intent { cmp=flar2.homebutton/a.i } Error: Requires permission android.permission.BIND_ACCESSIBILITY_SERVICE