从WebView评估Javascript而不隐藏键盘

时间:2014-08-22 13:46:28

标签: javascript android reflection webview android-softkeyboard

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

目前正在使用两种不同的方式来完成,具体取决于SDK版本。如果应用程序在Android API为19或更高的设备上运行,我们只需调用:

  

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

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

  

stringByEvaluatingJavaScriptFromString('javascript:myFunctionHere()')

来自WebViewCore使用的BrowserFrame类。

我需要的是为API Version 16,17& amp; 18.他们重写了WebView类并删除了mWebViewCore字段,他们没有添加evaluateJavascript()直到API 19。

使用WebView.loadURL()不是一个选项,因为它隐藏了设备上的软键盘(因为webview检测到它正被重定向或其他东西),因此无法在文本框中输入文本。

有没有办法在不隐藏软键盘的情况下评估现有网页浏览中的javascript?

1 个答案:

答案 0 :(得分:1)

没关系,解决了!

我从错误的角度处理这个问题。 我不是定期从java代码中调用javascript函数,而是在javascript中创建了一个函数,如果它仍然需要轮询并在javascript接口类中调用一个方法,如果我想返回的值不是空。

这样我只需要在页面完全加载后调用loadUrl()来启动轮询,然后让javascript完成剩下的工作。