JS与安卓的通信包括了安卓调用JS,JS调用安卓以及比较常用的使用callback方式调用.
要调用JS,首先要开启JS,调用websetting的setJavaScriptEnable(true);接着需要设置webview的加载打开方式,setWebViewClient(),setChromClient(),需要重写里面的方法.
首先,安卓调用JS,需要调用方法
mWebView.loadUrl("javascript:js中的方法名(方法参数)");
JS调用安卓,需要借助桥梁类,所以在安卓代码中先创建一个桥梁类,里面是JS要调用的方法.接着,需要调用的webview的addJavaScriptInterface(桥梁类对象,桥梁对象的映射字符串).
callback回调的步骤是:
1.在JS代码中创建参数变量,里面包含了callback元素,然后通过调用安卓方法,将参数传递过去,这里的callback作为了JS代码提供安卓调用的方法的占位符,避免了后期可能发生的JS代码方法名的改变;
2.在安卓的桥梁类对应的方法中解析出传递过来的calback,然后就可自由的添加想要传递给JS的数据,回调JS中callback代表的方法
代码示例如下:
安卓端代码:
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.wv);
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, Stri