Ich habe benutzerdefinierte InputMethod
, die eine BroadcastListener
darin haben. Wenn der Hörer eine Absicht in onReceive()
Methode abruft, rufe ich die onKey
Methode meiner InputMethod
auf und auf diese Weise simuliere ich einen Tastendruck von der Softkey-Platine. Wenn ich onKeyDown
oder onKeyUp
rufe, dann simuliere ich die Hardware-Tastatur. Das ist also eine Lösung, die ich nicht mag. IchMöglichkeit, Hardware-Taste drücken Ereignis
Gestern fand diese: http://mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.html
Ist es eine gute Idee, Instrumentation.sendKeyDownUpSync
zu verwenden Tastendruck zu simulieren, und es funktioniert perfekt, ich brauche nicht einmal meinen eigenen InputMethod
zu implementieren. Ich meine, diese Instrumentierung wird zu Testzwecken zur Verfügung gestellt, wie ich es verstehe.
Ist es eine gute Idee, auf meine Art und Weise verwendet zu werden?
Vielen Dank für die Antwort, aber der Punkt ist, dass ich nichts testen möchte, ich möchte nur die Instrumentation als normale logische Teil in der endgültigen Version der Anwendung verwenden, um Benutzereingabedaten zu generieren. Ist das in Ordnung, wird das bei jeder Version von Android gut funktionieren, wird es irgendwelche Erlaubnissprobleme geben? Und ja, IME ist nicht erforderlich, wenn ich Instrumentation verwende, aber es ist in Ordnung, es in der Release-Version zu verwenden (nicht zum Testen). –
Sie sollten 'Instrumentation' nicht als Teil Ihrer Anwendung verwenden. Was versuchst du zu archivieren? – Macarse
Es gibt Intent, der von einer anderen Anwendung per Broadcast gesendet wird (ich habe keinen Zugriff auf diese Anwendung). In der Absicht gibt es einen Zusatz, der ASCII-Code eines Zeichens ist. Also möchte ich es in meiner eigenen Anwendung abfangen und dieses Zeichen an die aktuelle InputMethod senden. Ich habe zwei Möglichkeiten gefunden, das zu tun. Das erste ist mit meiner eigenen IM, die eine Instanz des Broadcast-Listeners hat. Der BL fängt den Intent ab und ruft dann onKeyDown- und onKeyUp-Methoden des IM auf. In der zweiten benutze ich nur BL, die die Absicht abfängt und dann Instrumentation.sendKeyDownUpSync() aufruft, was den Tastendruck simuliert. –