js、原生互调
注:本文基于Android设备AgentWeb框架实现安卓原生和react互通
1.安卓调用js方法
-
react端暴露方法
const loadWithAndroidFunction = (obj) => {
console.log(`安卓调用js方法 入参:${obj}`)
}
useEffect(() => {
// 在useEffect中暴露方法到window上。
// ts方式
// (window as any).loadWithAndroid = loadWithAndroidFunction;
// js方式
// window.loadWithAndroid = loadWithAndroidFunction;
}, [])
-
安卓端调用js暴露的方法
//方法名称 入参
agentweb调用:mAgentWeb.jsAccessEntrace.quickCallJs("loadWithAndroid", "android test")
普通webveiw调用:webView.loadUrl("javascript:loadWithAndroid('"+android test+"')");
2.js调用安卓原生方法
-
安卓端定义方法
class WebInterface {
@JavascriptInterface
fun completeWithJs(url: String) {
Log.i("interface:", "js 调用安卓方法 入参:${url}")
}
}
agentweb调用:mAgentWeb.jsInterfaceHolder.addJavaObject("android", WebInterface())
普通webview调用:webView.addJavascriptInterface(new WebInterface(),"android");
-
react端调用安卓原生方法
window.android.completeWithJs("www.baidu.com")

浙公网安备 33010602011771号