2015-04-13 1 views
18

Ich möchte KEYCODE_SEARCH Ereignis mit ADB in meinem Code auslösen. Wenn ich diesen Befehl ausführe, kann ich keine Aktion in der Tastatur sehen. Aber wenn ich gebe "adb shell input keyevent KEYCODE_1" es funktioniert perfekt. Bitte geben Sie mir eine Lösung zum Auslösen der Suche mit ADB.Android "adb Shell-Eingabe keyevent KEYCODE_SEARCH" Funktioniert nicht

Und mein aktueller Code ist wie.

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_SEARCH) { 
      performSearch(); 
      return true; 
     } 
     return false; 
    } 
}); 


<EditText android:imeOptions="actionSearch" 
    android:inputType="text"/> 

Danke.

+0

'adb Shell Eingabe keyevent 84' http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_SEARCH –

+0

Hallo Alex, Danke für Wiederholung, habe ich auch dieses versucht, aber keine Verwendung. –

+0

Haben Sie in Ihrem Code ein Such-Widget oder einen Suchdialog oder eine suchbare Aktivität hinzugefügt? – PageNotFound

Antwort

8

Mit der Einstellung android:imeOptions="actionSearch" kann Ihr Bearbeitungstext kein KEYCODE_SEARCH Ereignis empfangen.

Wie auf Android reference beschrieben:

android: imeOptions
Zusätzliche Funktionen, die Sie in einem IME mit einem Editor zugeordnet ermöglichen die Integration in Ihre Anwendung zu verbessern. Die Konstanten hier entsprechen denen von imeOptions.

Wenn Sie KEYCODE_SEARCH von ADB gesendet erhalten wollen, müssen Sie onKeyDown in Ihrem Activity außer Kraft zu setzen und rufen Sie manuell onEditorAction

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_SEARCH){ 
     editText.onEditorAction(EditorInfo.IME_ACTION_SEARCH); 
     return true; 
    }else{ 
     return super.onKeyDown(keyCode, event); 
    } 
} 

Bitte beachten Sie, dass die anderen Anwendungen feuern die Suche nicht, wenn KEYCODE_SEARCH Ereignis gesendet, sie geben einfach den Fokus auf das Suchfeld