在不隐藏键盘的情况下从WebView评估Javascript

在不隐藏键盘的情况下从WebView评估Javascript,javascript,android,reflection,webview,android-softkeyboard,Javascript,Android,Reflection,Webview,Android Softkeyboard,我有一个WebView,它会定期评估一个javascript片段,直到它返回某个值 根据SDK版本的不同,目前正在使用两种不同的方法来完成此操作。如果应用程序运行在Android API为19或更高的设备上,我们只需调用: webview.evaluateJavascript('javascript:myFunctionHere()',null) 如果Android API版本等于或介于15或8(最低SDK版本)之间,我们将使用反射调用: stringByEvaluatingJavaScript

我有一个WebView,它会定期评估一个javascript片段,直到它返回某个值

根据SDK版本的不同,目前正在使用两种不同的方法来完成此操作。如果应用程序运行在Android API为19或更高的设备上,我们只需调用:

webview.evaluateJavascript('javascript:myFunctionHere()',null)

如果Android API版本等于或介于15或8(最低SDK版本)之间,我们将使用反射调用:

stringByEvaluatingJavaScriptFromString('javascript:myFunctionHere()')

来自WebViewCore使用的BrowserFrame类

我需要的是为API版本16、17和18实现这一点的方法。他们重写了WebView类并删除了mWebViewCore字段,直到API 19,他们才添加evaluateJavascript()

使用WebView.loadURL()不是一个选项,因为这会隐藏设备上的软键盘(因为WebView检测到它正在被重定向或其他情况),从而无法在文本框中输入文本

有没有一种方法可以在不隐藏软键盘的情况下在现有webview上评估javascript?

没关系,解决了它

我从错误的角度处理这个问题。 我没有周期性地从java代码中轮询javascript中的函数,而是在javascript中创建了一个函数,如果仍然需要轮询,则对其自身进行延迟调用,如果希望返回的值不是null,则在javascript接口类中调用一个方法

这样,我只需要在页面完全加载后调用loadUrl(),就可以开始轮询,然后让javascript完成其余的工作