在Android Activity中从软件键盘中收听Webview Key Events

在Android Activity中从软件键盘中收听Webview Key Events,第1张

概述是否可以从主机 Android应用程序中的Webview处理软件键盘事件? 例如,我的应用程序的Activity可以在显示Google网站的webview的搜索字段中收听键入的内容吗? 考虑到下面描述的方法,如果我覆盖它返回true,这将是可能的,但不幸的是我无法做到这一点.有任何想法吗? public boolean shouldOverrideKeyEvent (WebView view, K 是否可以从主机 Android应用程序中的WebvIEw处理软件键盘事件?

例如,我的应用程序的Activity可以在显示Google网站的webvIEw的搜索字段中收听键入的内容吗?

考虑到下面描述的方法,如果我覆盖它返回true,这将是可能的,但不幸的是我无法做到这一点.有任何想法吗?

public boolean shouldOverrIDeKeyEvent (WebVIEw vIEw,KeyEvent event)Added in API level 1Give the host application a chance to handle the key event synchronously. e.g. menu shortcut key     events need to be filtered this way. If return true,WebVIEw will not handle the key event. If return false,WebVIEw will always handle the key event,so none of the super in the vIEw chain will see the key event. The default behavior returns false.ParametersvIEw    The WebVIEw that is initiating the callback.event   The key event.ReturnsTrue if the host application wants to handle the key event itself,otherwise return false
解决方法 我认为shouldOverrIDeKeyEvent方法只是告诉系统应该向哪个“窗口”通知关键事件;这不会将WebVIEw JavaScript事件传递回Activity.

如果需要将信息从WebVIEw传递到Activity,则可以使用JavaScriptInterface.请注意,这仅适用于您控制的网站;否则它将成为安全漏洞,为您的应用提供对敏感数据的访问权限.

首先,创建一个类作为您的界面:

class MyJavaScriptInterface{    //Methods to call via Js in the WebVIEw go here}

然后初始化WebVIEw上的界面:

mWebVIEw.getSettings().setJavaScriptEnabled(true);mWebVIEw.addJavaScriptInterface(new MyJavaScriptInterface(),"JsInterface");

现在,您说您希望将键入的内容从文本字段传递回活动.为此,在模糊上注册文本字段的事件监听器,当字段失去焦点时将触发该事件监听器.

<!-- HTML element to Listen for blur --><input ID="fIEld" type="text" /><script>  //Communicate with JavaScript Interface  var JsFIEldBlur = function(fIEld){      //Only call if the interface exists      if(window.JsInterface){          window.JsInterface.onFIEldBlur(fIEld.ID,fIEld.value);      }  };  //Obtain reference to DOM element  var fIEld = document.getElementByID("fIEld");  //Attach blur Listener  fIEld.addEventListener("blur",function( event ) {      JsFIEldBlur(event.target);     },true);</script>

最后,我们需要将onFIEldBlur方法添加到MyJavaScriptInterface类,以便可以通过JavaScript调用它.以这种方式定义的任何方法都必须以@JavaScriptInterface开头,以便对WebVIEw可见.

class MyJavaScriptInterface{    @JavaScriptInterface    public voID onFIEldBlur(String fIEldID,String fIEldValue){        //Do something with value        Toast.makeText(getContext(),fIEldID+"="+fIEldValue,Toast.LENGTH_LONG).show();    }}
总结

以上是内存溢出为你收集整理的在Android Activity中从软件键盘中收听Webview Key Events全部内容,希望文章能够帮你解决在Android Activity中从软件键盘中收听Webview Key Events所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存