混合开发:Android webwiew内调用input.focus()有概率无法弹出软键盘

需求是在Webwiew内,点击一个非输入框的组件,拉起软键盘并处理输入内容。输入框本身不可见。

我的实现方式是在js里监听一个canvas的touchend事件,事件处理里调用另一个input组件的focus()方法(input组件位置放到页面外),可以实现需求。但是有时会出现软键盘无法拉起的情况,反复点击也无法弹出。

在问题现场下,我在另一个按钮的点击事件里打印document.activeElement.id,跟input组件的id一致,说明貌似焦点是有成功设置到input上的,但是输入框上并没有出现选中效果,软键盘也没有弹出。

尝试过先blur再focus,延时调用focus,都不能解决问题。

重现方式还不确定,反复切换前后台,关开应用后,有概率出现,概率并不太低。

请教大佬如何解决该问题,或者如果无解的话是否有替代方案实现该需求,非常感谢。

可以尝试下让安卓原生去强制弹出软键盘,通过JS交互

你可以去看看:https://shuaici.blog.csdn.net/article/details/70257611也许又你想要的答案。

如有帮助,麻烦采纳。

采纳,谢谢

webview加载一个网页版聊天时,由于输入框还要加载表情,没有使用< input >标签,使用的< pre >标签, 
这时点击输入框无法弹出微软键盘 
在网上查询说给webview获取焦点即可。

 webView.requestFocus();

直接使用上述代码无效,这里需要指定一个动作方向,就是在点击时获取焦点

webview.requestFocus(View.FOCUS_DOWN);

经测试可以弹出软键盘。