我有一个WebView,它定期计算javascript片段,直到它返回某个值为止。
根据SDK版本的不同,目前正在使用两种不同的方法来完成这一任务。如果应用程序运行在Android API为19或更高的设备上,我们只需调用:
webview.evaluateJavascript('javascript:myFunctionHere()', null)
如果Android版本等于或介于15或8(最低SDK版本),我们将使用反射调用:
stringByEvaluatingJavaScriptFromString('javascript:myFunctionHere()')
来自由BrowserFrame使用的WebViewCore类。
我需要的是对API 16、17和18这样做,他们重写了WebView类,删除了mWebViewCore字段,直到API 19才添加evaluateJavascript()。
使用WebView.loadURL()不是一个选项,因为这隐藏了设备上的软键盘(因为webview检测到它正在被重定向或其他什么东西),因此不可能在文本框中输入文本。
有没有一种方法可以在不隐藏软键盘的情况下评估现有的webview上的javascript?
发布于 2014-08-25 09:46:38
不介意,解决了!
我是从错误的角度来处理这个问题的。我没有定期从java代码中轮询javascript中的函数,而是在javascript中创建了一个函数,如果它仍然需要轮询,就延迟调用它自己;如果我想返回的值不是null,则调用javascript接口类中的一个方法。
这样,我只需要在页面完全加载之后调用loadUrl()来启动投票,然后让javascript来完成剩下的工作。
https://stackoverflow.com/questions/25448555
复制