Android WebView中的WebViewClient

在使用WebView加载百度页面时,遇到键盘事件无法选中自动提示的Suggestions的问题。通过检查WebViewClient的shouldOverrideKeyEvent方法发现返回值为true导致事件未被处理。调整代码使事件得以正常响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebViewClient主要是对通知应用程序关于历史记录,重新提交请求,加载资源,网页开始加载,网页加载结束,以及接收到的各种错误,是否重载键盘事件,是否重载网页加载。


其中shouldOverrideKeyEvent(WebView view, KeyEvent event)

这个方法将会给应用程序一个同步处理键盘事件的机会。如果返回true,WebView 将不会处理这个键盘事件;如果返回false,WebView 总会处理这个键盘事件,而其祖先view不会看到这个键盘事件。默认的是返回false。


在项目中就碰到这样的一个bug,描述如下:

在网页中打开http://www.baidu.com这个网址,百度的输入框是采用js来进行自动提示的,因此,需要WebSettings.setSupportJavascript(true);当在输入框中输入web后,下面会自动提示相关的Suggestions,问题是当我想按键盘选中某一个Suggestion时,并没有像想象中的那样Suggestion被选中(注:鼠标点击可以触发)。当时也想着,肯定是键盘事件接收出了问题。结果查看大半天才发现是在shouldOverrideKeyEvent方法中,直接返回了true,我去!!!!难怪WebView没能处理这个这个键盘事件。


而shouldOverrideUrlLoading(WebView view, String url)

当一个新的url要在当前WebView中加载时,这个方法将会应用程序接管控制的机会。当WebViewClient没有设置时,默认情况下,WebView会让Activity Manager来选择合适的程序来处理这个url。当WebViewClient被设置时,返回true意味着当前应用程序会处理这个url;返回false意味着当前的WebView会处理这个url。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值