关于Android4.4以下版本Webview执行LoadUrl加载js导致键盘隐藏的问题(富文本编辑器)

来源:互联网 发布:好奇心教育知乎 编辑:程序博客网 时间:2024/04/30 09:40

最近由于公司项目在做富文本编辑器使用到了一个开源的项目,这里也给出Github项目地址richeditor-android。

关于这个富文本编辑器的具体实现就不多说了,说一个存在的问题,由于富文本编辑器是基于webview通过JS动态添加html的方式实现的,而做android开发而且比较了解webview的人都知道,webview的api更新几个版本之后是各种坑,其中一个是loadurl执行js会收起软键盘,而Android4.4之后是通过evaluateJavascript加载的,这种方式不会导致收起软键盘。如何在低版本手机运行而不收起键盘,我浏览了各种解决方案,其中一个能够实现的是 Cordova android框架详解 所说的通过反射机制解决loadurl导致软键盘隐藏的问题。

下面这段代码是 Cordova中的描述:

private class PrivateApiBridgeMode extends BridgeMode     Field f = webViewClass.getDeclaredField("mProvider");    f.setAccessible(true);    webViewObject = f.get(webView);    webViewClass = webViewObject.getClass();     Field f = webViewClass.getDeclaredField("mWebViewCore");    f.setAccessible(true);    webViewCore = f.get(webViewObject);    if (webViewCore != null) {        sendMessageMethod =       webViewCore.getClass().getDeclaredMethod("sendMessage", Message.class);       sendMessageMethod.setAccessible(true);      }      Message execJsMessage = Message.obtain(null, EXECUTE_JS, url);     sendMessageMethod.invoke(webViewCore, execJsMessage);

下面放出的demo是经过修改的,解决了这一个问题,同时也添加了一些额外功能,比如加载本地图片,弹出窗口提示删除图片等,有需要可以看看:

CSDN下载地址

0 0
原创粉丝点击