Android中Webview与js交互

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值