Ich habe das Softkeyboard-Beispiel (eine App) des Android SDK heruntergeladen und in Android Studio importiert und auf meinem Sony xPeria Z3 mit Android 5.1.1 installiert. Allerdings sehe ich den App-Namen nicht auf der Seite mit den Sprach- und Eingabeeinstellungen .
Ich habe die Liste der installierten Apps auf meinem Telefon überprüft und sehe, dass SoftKeyboard installiert ist und in Android Studio kein Fehler auftritt.
Können Sie mir einen Weg zeigen, dieses Problem zu beheben?
Hinweis : Die Befehle in dieser Lösung erfordern die Einrichtung von adb auf dem PC und die Lösung wurde auf Android 4.2.1, 5.0.2 und 5.1.1 getestet.
Immer wenn eine App, die mit einem IME-Dienst ausgestattet ist, im System installiert wird, muss der Besitzer des Geräts ausdrücklich zulassen, dass die App Teil der aktivierten Eingabemethoden wird, um ihren IME mit dem System zu verbinden .
Wie passiert es also? Wir wissen, dass wir die Befehlszeile verwenden können, aber das ist nicht das, was normale Benutzer tun.
Es passiert so. Wenn Sie diese App starten, werden oder würden Sie aufgefordert, ihre Tastatur zu aktivieren. Sie werden dann zu einer Unteraktivität der App „Einstellungen“ weitergeleitet. In ROMs in der Nähe von Standard-Android kann ein Benutzer auf diese Unteraktivität über Einstellungen → Sprache & Eingabe → Aktuelle Tastatur → Tastaturen auswählen zugreifen . So sieht es bei manchen Geräten aus:
(Zum Vergrößern auf das Bild klicken; Bild mit freundlicher Genehmigung von OP)
Alternativ können Sie die Befehlszeile verwenden, um diese Unteraktivität anzuzeigen
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS
adb shell "am start 'intent:#Intent;action=android.settings.INPUT_METHOD_SETTINGS;end'" # alternative to above command
Für eine App wird in dem Moment, in dem Sie den Schieberegler in dieser Unteraktivität nach rechts drehen, die IME-ID an den Wert von enabled_input_methods angehängt – eine sichere Einstellung. Die App wird dann unter den bereits aktivierten Eingabemethoden unter Einstellungen → Sprache & Eingabe aufgelistet .
Da nur ein IME als Standard-IME im System verbleiben kann, zeigt Ihnen die App dann einen Dialog, um eine Tastatur-App als Standard auszuwählen. Auf diesen Dialog kann über Einstellungen → Sprache & Eingabe → Aktuelle Tastatur zugegriffen werden . Unabhängig davon, welchen Eintrag Sie dort auswählen, wird die Standardtastatur im Gerät.
Jetzt, da Sie die Details kennen, können Sie jetzt ganz einfach eine Tastatur zu aktivierten Eingabemethoden hinzufügen, einschließlich Ihrer Beispiel-Tastatur-App.
Es gibt auch einen anderen Weg. Alle aktivierten Eingabemethoden können mit diesem Befehl aufgelistet werden:
adb shell ime list -s
Beispielausgabe
com.android.inputmethod.latin/.LatinIME
net.zhdev.ctrlvkeyboard/.CtrlVKeyboard
Alle verfügbaren (aktivierten oder nicht aktivierten) IME-Dienste können aufgelistet werden
adb shell ime list -a
Beispielausgabe
com.android.inputmethod.latin/.LatinIME: mId= com.android.inputmethod.latin/.LatinIME mSettingsActivityName=com.android.inputmethod.latin.settings.SettingsActivity mIsDefaultResId=0x7f070000 Service: Priorität=0 PreferredOrder=0 Match=0x108000 SpecificIndex=-1 isDefault=false ServiceInfo: name=com.android.inputmethod.latin.LatinIME Paketname=com.android.inputmethod.latin labelRes=0x7f08003a nonLocalizedLabel=null icon=0x0 banner=0x0 enabled=true exported=true processName=com.android.inputmethod.latin permission=android.permission.BIND_INPUT_METHOD flags=0x0 net.zhdev.ctrlvkeyboard/.CtrlVKeyboard: mId= net.zhdev.ctrlvkeyboard/.CtrlVKeyboard mSettingsActivityName=null mIsDefaultResId=0x0 Service: Priorität=0 PreferredOrder=0 Match=0x108000 SpecificIndex=-1 isDefault=false ServiceInfo: name=net.zhdev.ctrlvkeyboard.CtrlVKeyboard Paketname=net.zhdev.ctrlvkeyboard labelRes=0x7f0b0015 nonLocalizedLabel=null icon=0x0 banner=0x0 enabled=true exported=true processName=net.zhdev.ctrlvkeyboard permission=android.permission.BIND_INPUT_METHOD flags=0x0 com.touchtype.swiftkey/com.touchtype.KeyboardService: mId= com.touchtype.swiftkey/com.touchtype.KeyboardService mSettingsActivityName=com.touchtype.settings.TouchTypeKeyboardSettings mIsDefaultResId=0x0 Service: Priorität=0 PreferredOrder=0 Match=0x108000 SpecificIndex=-1 isDefault=false ServiceInfo: name=com.touchtype.KeyboardService Paketname=com.touchtype.swiftkey enabled=true exported=true processName=com.touchtype.swiftkey permission=android.permission.BIND_INPUT_METHOD flags=0x0
Die hervorgehobenen Zeichenfolgen daneben mId=
sind die IDs der Tastatur-Apps, die in meinem System verfügbar sind.
In jeder ID /
ist die Zeichenfolge davor der Paketname der Tastatur-App. Beispiel: Für die Swiftkey-Tastatur lautet die mId:
com.touchtype.swiftkey/com.touchtype.KeyboardService
Die Zeichenfolge com.touchtype.swiftkey
ist der Paketname der Swiftkey-App. Der Paketname hilft Ihnen, die entsprechende mID zu finden, die Sie verwenden sollten, um eine bestimmte Tastatur-App zu aktivieren.
Um den Paketnamen einer App zu erfahren, folgen Sie Vollständiger Paketname der App anzeigen?
Um einen IME zu aktivierten Eingabemethoden hinzuzufügen oder zu entfernen, tun Sie dies
# replace ID with mId of the keyboard app which you want to add or remove
adb shell ime enable ID
adb shell ime disable ID
Um einen IME zum Standard-IME des Systems zu machen, tun
# Note that it doesn't matter whether the IME is added into enabled input methods or not. Consider this a direct override.
adb shell settings put secure default_input_method "ID"
adb shell content update --uri content://settings/secure --bind value:s:"ID" --where "name='default_input_method'" # alternative to above command
Feuerlord
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS
oder aktiviertadb shell "am start 'intent:#Intent;action=android.settings.INPUT_METHOD_SETTINGS;end'"
. Ich glaube, es ist nicht schwer, diesen Befehl in einen Code umzuwandeln.