Kurze Frage: Ist es möglich (und wie), die Soft-Tastatur von einem Dienst aus anzuzeigen?
Lange Frage: Ich habe einen Dienst geschrieben, der eine "obere Leiste" erstellt, die oben auf allen Aktivitäten angezeigt wird und einen EditText enthält. Ich möchte die Soft-Tastatur anzeigen, wenn dieser EditText angeklickt wird, aber dies geschieht nicht.
Natürlich habe ich versucht, dies von der Service's onFocusChange() und onClick():
InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
Die Abhilfe, die ich gefunden habe, besteht darin, die aktuelle Aktivität aufzufordern, die Tastatur anzuzeigen, indem ich die Klasse Activity erweitere und eine AIDL-Schnittstelle hinzufüge. Der Nachteil ist, dass jedes Tastenereignis an den Dienst zurückgeschickt (über eine andere AIDL-Schnittstelle) und manuell in Unicode umgewandelt werden muss.
Wenn die aktuelle Aktivität einen EditText enthält, funktioniert das Soft-Keyboard außerdem nur für die Aktivität und wird nicht mehr angezeigt, wenn der EditText des Dienstes ausgewählt ist.
Was verhindert, dass die Soft-Tastatur des Dienstes angezeigt wird, wenn die aktuelle Aktivität einen EditText hat? Könnte es eine Android-Beschränkung sein?