
webview如何调用java
用户关注问题
我希望通过WebView加载的网页中的JavaScript代码能调用Android端的Java方法,这应该如何实现?
通过添加Java对象并开启JavaScript支持
需要先启用WebView的JavaScript支持,通过webView.getSettings().setJavaScriptEnabled(true)实现。然后定义一个Java类,里面写需要供JavaScript调用的方法,使用@JavascriptInterface注解标记。接着调用webView.addJavascriptInterface(javaObject, "interfaceName")将Java对象注入到WebView中,网页的JavaScript可以通过window.interfaceName.方法名()的方式调用对应Java方法。
我需要从网页的JavaScript中向Java传递字符串或数字参数,Java端如何接收这些参数?
使用@JavascriptInterface注解的方法参数接收参数
在Java端注入的对象中定义带参数的方法,并用@JavascriptInterface注解。JavaScript调用时,可以传入参数,比如window.interfaceName.someMethod('参数字符串'),Java方法的参数就会接收到传来的值。注意只支持基本数据类型及字符串,复杂对象需自行序列化。
我让Java代码处理一些逻辑,需要将处理结果传回JavaScript,怎么实现来回交互?
使用WebView的evaluateJavascript方法回调JavaScript
Java方法处理完成后,可以调用webView.evaluateJavascript(""),执行JavaScript代码并通过ValueCallback获得执行结果。另外,也可以在Java接口方法内部定义回调机制,将结果回调至JavaScript页面,例如调用window.someCallback(result)完成数据回传,实现双向通信。