JS 调用 Android,用到了JNI,大概含义是将注册监听的方法,通过一些类转成Javascript语句,由WebView加载进来。
- 实现
整体代码比较简单,注意其中的对应关系
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView mWebView =findViewById(R.id.webView);
WebSettings webSettings = mWebView.getSettings();
// 打开开关,设置与Js交互的权限
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JSBridge(),"bridge");
// 加载JS代码
mWebView.loadUrl("http://192.168.2.52:3001/test.html");
}
public class JSBridge {
// @JavascriptInterface 必须加上
@JavascriptInterface
public void print(String msg) {
System.out.println("JS调用了Android的print方法");
}
}
}
loadUrl 可以是项目中asset文件夹下的文件,也可以是一个http地址。
JSBridge 中的注解必须要加,是靠注解识别本地监听方法。
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>title</title>
<scr