当前位置: 移动技术网 > IT编程>移动开发>Android > android webview中使用Java调用JavaScript方法并获取返回值

android webview中使用Java调用JavaScript方法并获取返回值

2019年07月24日  | 移动技术网IT编程  | 我要评论

残酷拳霸,拯救安伦·觅影者,撕裂人小游戏

在android平板上用webview打开一个网页,调用里面的javascript方法,同时相互传参。
网上例子很少啊,基本都不能获取返回值,贴一个自己最后调试完的代码如下:
java:

复制代码 代码如下:

protected void oncreate(bundle savedinstancestate)
{
........
x = (webview)this.findviewbyid(r.id.webview_viewtable);
x.setscrollbarstyle(view.scrollbars_inside_overlay);
x.getsettings().setbuiltinzoomcontrols(true);
x.getsettings().setjavascriptenabled(true);
x.addjavascriptinterface(new jstojava(), "stub");  //jstojava是内部类,代码在后面。stub是接口名字。

//x.loadurl("http://192.168.1.1/init.html");//这句是载入一个html页面。但是因为直接load一个网页会有延迟,所以最好用下面这句:
x.loaddatawithbaseurl("", data, "text/html", "utf-8","");  //这句里面data是init.html的内容。就是代码。直接用fileinputstream获取到就好。

x.loadurl("javascript:setvaluesjson('hello world')"); //hello world是给javascript传递的参数。setvaluesjson是页面里javascript的方法。如果传递的参数中有双引号的话,用下面的写法:
string url = "javascript:setvaluesjson(\"" + jsonstring + "\")";
x.loadurl(url);
.........
}//oncreate结束

再写一个内部类:

复制代码 代码如下:

private class jstojava
{
        public void jsmethod(string paramfromjs)
        {
            //log.i("cdh", paramfromjs);
            system.out.println("js返回结果" + paramfromjs);//处理返回的结果
        }
}

javascript代码:

复制代码 代码如下:

<script type="text/javascript">
        function setvaluesjson(param)
        {
            alert(param);//param是java传过来的值,即"hello world".
            var result = "传回java的string";
            window.stub.jsmethod(result);//用接口stub, 通过调用内部类中的方法jsmethod给java传回result。
        }
</script>

  
搞定。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网