我有一个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?
答案 0 :(得分:1)
没关系,解决了!
我从错误的角度处理这个问题。 我不是定期从java代码中调用javascript函数,而是在javascript中创建了一个函数,如果它仍然需要轮询并在javascript接口类中调用一个方法,如果我想返回的值不是空。
这样我只需要在页面完全加载后调用loadUrl()来启动轮询,然后让javascript完成剩下的工作。