2
votes

Empêcher l'apparition de l'entrée logicielle

J'ai un lecteur de codes-barres Bluetooth connecté à la tablette Android. Le clavier matériel est désactivé dans les paramètres Android. Cela me permet à la fois de scanner les codes-barres et d'utiliser le clavier logiciel pour taper.

Lorsque je scanne un code-barres, mon activité capture toutes les touches comme prévu. Mais le clavier virtuel apparaît.

Comment empêcher le clavier virtuel d'apparaître?

J'ai essayé ce qui suit:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

ou

android:windowSoftInputMode=stateHidden

(ou stateAlwaysHidden ),

mais rien n'a fonctionné. Lorsque l'application intercepte la touche matérielle, le clavier virtuel apparaît.


2 commentaires

Essayez d'utiliser dispatchTouchEvent


@ ashishdhiman2007, ce code désactive simplement toute interaction tactile avec l'application.


3 Réponses :


1
votes

Dans le manifeste, pourriez-vous essayer ce qui suit

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
          android:label="@string/app_name"
          android:windowSoftInputMode="stateHidden">


1 commentaires

Je vous remercie. Comme je l'ai écrit dans ma question, cela n'aide pas. Le clavier virtuel s'affiche lorsqu'un code-barres est scanné.



0
votes

veuillez ajouter cet attribut à votre activité dans le manifeste:

  android:windowSoftInputMode="stateHidden"


1 commentaires

Merci, mais ceci est un double de la réponse d'Alok Gupta.



0
votes

Celui-ci fonctionne pour moi:

public static void hideSoftInput(Activity activity) {
    View view = activity.getCurrentFocus();
    if (view == null) view = new View(activity);
    InputMethodManager imm = (InputMethodManager) activity
            .getSystemService(Activity.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}


1 commentaires

Je vous remercie. Ce code masque le clavier après son apparition. Je veux empêcher du tout l'apparition.