我试图在我的应用中在webview中执行javascript。它在kitkat下工作得很好,但是当在kitkat及以上设备上测试应用程序时,app会表现得很奇怪。 它找不到方法。这是我的Javascript代码片段
function callTojavaFn(verse) {
var msg = "Calling from Java Script";
JsHandler.forwardSelectedVerses(verse);
}
这是我的Android代码段
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
CookieManager cookies = CookieManager.getInstance();
cookies.setAcceptThirdPartyCookies(wvVerses, true);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(webUrl,new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.d("javascript:getSelectedVerse",value);
}
});
这是我在KitKat之后的日志记录
这是在kitkat之前
答案 0 :(得分:1)
由于我对webView的经验有限;从你的代码剪切中我无法确切地知道你的代码有什么问题,但我对可能发生的事情有一些想法。
我认为您的问题来自API的更改,如果您希望您的应用在目标sdk版本17上工作,并在您想要的公共方法(或类)之前添加 @JavascriptInterface 使用webview(以及你的编译器在kitkat上找不到的)。您可以在将JavaScript代码绑定到Android代码部分的以下链接中找到示例:android webview guide。这将在较新版本上运行您的代码,但您将在早期版本中遇到错误。如果您希望您的应用适用于较旧和较新的目标sdk,我会在以下问题中查看“Simon”回答:JavascriptInterface annotation for JELLY_BEAN and below
如果我之前的建议不起作用,我建议您发布更多代码,或者在以下链接上查看有关Webview新版本(从19-kitkat开始)的更改的教程:migrating to target sdk 19 and higher。它描述了您在较新的webView中可能遇到的问题以及如何解决它们。