Comment puis-je afficher le clavier doux dans une vue web avec un périphérique HID USB attaché lorsqu'un bouton est cliqué et qu'une entrée est concentrée?

J'ai un scanner de code-barres USB qui est branché sur le périphérique avec USB OTG. Parce que cela est pris en charge en tant que périphérique HID du clavier, le clavier doux est désactivé lorsque les entrées sont concentrées.

J'ai actuellement une méthode qui déclenche le clavier à partir de JavaScript.

  • Comment puis-je ajouter un «projet de bibliothèque» dans IntelliJ IDEA?
  • Différence entre SparseArray Vs ArrayList?
  • Débogage à distance avec Dart
  • Quels sont les 37 paquets API Java éventuellement encombrés par la décision Oracle v Google de mai 2014?
  • Insérer une nouvelle intention de contact
  • Cordova WebView TIMEOUT ERROR avec Android
  • class JsObject { @JavascriptInterface public void InvokeKeyboard() { InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.showSoftInput(findViewById(R.id.webView), InputMethodManager.SHOW_FORCED); } } webview.addJavascriptInterface(new JsObject(), "Android"); 

    Je souhaite essentiellement qu'il ouvre le clavier sur l'action suivante à l'intérieur de la vision du Web.

     const button = document.querySelector('.fire-keyboard'); button.addEventListener('click', () => Android.InvokeKeyboard()); 

    Il fonctionne quand il est appelé à partir de la visualisation web manuellement mais je veux pouvoir cliquer sur un bouton qui le déclenche, et en cliquant sur le bouton perd la mise en place de la boîte de saisie.

    Juste pour ajouter, je ne veux pas que le clavier s'affiche lors de la mise au point d'une boîte de saisie, uniquement pour montrer quand un bouton est cliqué pour le déclencher. Par défaut, il apparaît sur la mise au point.

    4 Solutions collect form web for “Comment puis-je afficher le clavier doux dans une vue web avec un périphérique HID USB attaché lorsqu'un bouton est cliqué et qu'une entrée est concentrée?”

    Je ne peux pas le tester maintenant, mais vous pouvez simplement utiliser la javascriptinterface pour appeler ceci:

     InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE); imeManager.showInputMethodPicker(); 

    Cela DEVRAIT ouvrir la boîte de dialogue avec les claviers actuels (périphérique d'entrée). Puisque le scanner bluetooth remplace le clavier actuel, je ne suis pas sûr de pouvoir afficher le clavier logiciel.

    Avec la même méthode, l'utilisateur retourne au scanner si nécessaire.

    Je vais l'essayer quand je serai de retour à la maison, dans 6 ou 7 heures à partir de maintenant, mais je suis libre pour essayer;)

    Il s'avère que je devais simplement activer ce matériel.

    Entrez la description de l'image ici

    Peut-être est-ce dû à un périphérique que vous utilisez. J'ai fait un échantillon en fonction de votre scénario et je l'ai exécuté avec succès sur le périphérique Nexus5 que j'utilise.

    Il suffit d'utiliser document.getElementById("mytextfield").focus(); Dans le code JS qui a fait l'affaire.

    Exemple de code html

     <!DOCTYPE html> <html> <head> </head> <body> <form name="myform"> <input type="text" id="mytextfield"> </form> <input type="button" value="Click Me!" onClick="executeAndroidCode()" /> <script type="text/javascript"> function executeAndroidCode() { Android.execAndroid(); document.getElementById("mytextfield").focus(); //this line did the trick after click on button } </script> </body> </html> 

    Enregistrez ce fichier dans l'actif nommé index.html

    JavaScriptInterface

     public class WebAppInterface { Context mContext; /** Instantiate the interface and set the context */ WebAppInterface(Context c) { mContext = c; } @JavascriptInterface public void execAndroid() { InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.showSoftInput(findViewById(R.id.webView1), InputMethodManager.SHOW_FORCED); } } 

    CodeCréer

     WebView wv = (WebView) findViewById(R.id.webView1); wv.addJavascriptInterface(new WebAppInterface(this), "Android"); WebSettings webSettings = wv.getSettings(); webSettings.setJavaScriptEnabled(true); wv.loadUrl("file:///android_asset/index.html"); 

    Il fonctionne bien de mon côté, j'utilise Nexus5 . Bien que le curseur ne s'affiche pas dans la capture d'écran, mais il clignote lorsque je lance l'application.

    Entrez la description de l'image ici

     Try this inputBox.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus) { getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(passwordInput, 0); } } }); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.