1.js调用Android代码
Android端:
webView.addJavascriptInterface(new WebHost(this),"js");
向WebView注册一个名叫“js”的对象,然后在JS中可以访问js这个对象,调用这个对象里的一些方法。
public class WebHost {
public Context context;
public WebHost(Context context){
this.context = context;
}
@JavascriptInterface
public void showDialogJs(){
Toast.makeText(context, "Hello,World", Toast.LENGTH_LONG).show();
}}
注:所调用的方法要加 @JavascriptInterface,否则调不到
Web端:
通过js这个对象去调方法
function openDialog(){
js.showDialogJs();
}
2.Android给Web传参
Web端:
function showInfoFromJava(msg){
alert(msg);
}
Android端:
通过JavaScript方法将msg传递给Web端
webView.loadUrl("javascript:showInfoFromJava('"+photoPath+"')");
补充:
最近用了一种新的方式往webview上传较多参数
定义一个实体类
生成set get方法 在get方法前加 @JavascriptInterface
例如
@JavascriptInterface
publice String getToken(){
return token;
}
然后在Webview上 new一个实体类(例:info) 将要传的参数 set进实体类中
webView.addJavascriptInterface(info, "Info");
webView.loadUrl("javascript:callJS()");
Web端解析时 直接Info.getToken()即可获取数据;
注:
怎么用Chrome浏览器调试WebView
在configWebViewOption()方法下添加代码
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
WebView.setWebContentsDebuggingEnabled(true);
}
在Chrome中输入 chrome://inspect
如果需要翻墙 我用的是SSR