html5中文学习网

您的位置: 首页 > android » 正文

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

[ ] 已经帮助:人解决问题

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

复制代码 代码如下:
2wZHTML5中文学习网 - HTML5先行者学习网
protected void onCreate(Bundle savedInstanceState)2wZHTML5中文学习网 - HTML5先行者学习网
{2wZHTML5中文学习网 - HTML5先行者学习网
........2wZHTML5中文学习网 - HTML5先行者学习网
x = (WebView)this.findViewById(R.id.webView_viewTable);2wZHTML5中文学习网 - HTML5先行者学习网
x.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 2wZHTML5中文学习网 - HTML5先行者学习网
x.getSettings().setBuiltInZoomControls(true); 2wZHTML5中文学习网 - HTML5先行者学习网
x.getSettings().setJavaScriptEnabled(true); 2wZHTML5中文学习网 - HTML5先行者学习网
x.addJavascriptInterface(new JsToJava(), "stub");  //JsToJava是内部类,代码在后面。stub是接口名字。2wZHTML5中文学习网 - HTML5先行者学习网

//x.loadUrl("http://192.168.1.1/init.html");//这句是载入一个html页面。但是因为直接load一个网页会有延迟,所以最好用下面这句:2wZHTML5中文学习网 - HTML5先行者学习网
x.loadDataWithBaseURL("", data, "text/html", "UTF-8","");  //这句里面data是init.html的内容。就是代码。直接用FileInputStream获取到就好。2wZHTML5中文学习网 - HTML5先行者学习网

x.loadUrl("javascript:setValuesJson('hello world')"); //hello world是给JavaScript传递的参数。setValuesJson是页面里JavaScript的方法。如果传递的参数中有双引号的话,用下面的写法:2wZHTML5中文学习网 - HTML5先行者学习网
String url = "javascript:setValuesJson(/"" + jsonString + "/")";2wZHTML5中文学习网 - HTML5先行者学习网
x.loadUrl(url);2wZHTML5中文学习网 - HTML5先行者学习网
.........2wZHTML5中文学习网 - HTML5先行者学习网
}//onCreate结束2wZHTML5中文学习网 - HTML5先行者学习网

2wZHTML5中文学习网 - HTML5先行者学习网

再写一个内部类:2wZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
2wZHTML5中文学习网 - HTML5先行者学习网
private class JsToJava2wZHTML5中文学习网 - HTML5先行者学习网
{ 2wZHTML5中文学习网 - HTML5先行者学习网
        public void jsMethod(String paramFromJS)2wZHTML5中文学习网 - HTML5先行者学习网
        { 2wZHTML5中文学习网 - HTML5先行者学习网
            //Log.i("CDH", paramFromJS); 2wZHTML5中文学习网 - HTML5先行者学习网
            System.out.println("js返回结果" + paramFromJS);//处理返回的结果2wZHTML5中文学习网 - HTML5先行者学习网
        } 2wZHTML5中文学习网 - HTML5先行者学习网
} 2wZHTML5中文学习网 - HTML5先行者学习网
2wZHTML5中文学习网 - HTML5先行者学习网

JavaScript代码:2wZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
2wZHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript">2wZHTML5中文学习网 - HTML5先行者学习网
        function setValuesJson(param)2wZHTML5中文学习网 - HTML5先行者学习网
        {2wZHTML5中文学习网 - HTML5先行者学习网
            alert(param);//param是java传过来的值,即"hello world".2wZHTML5中文学习网 - HTML5先行者学习网
            var result = "传回Java的string";2wZHTML5中文学习网 - HTML5先行者学习网
            window.stub.jsMethod(result);//用接口stub, 通过调用内部类中的方法jsMethod给java传回result。2wZHTML5中文学习网 - HTML5先行者学习网
        }2wZHTML5中文学习网 - HTML5先行者学习网
</script>2wZHTML5中文学习网 - HTML5先行者学习网
2wZHTML5中文学习网 - HTML5先行者学习网
   2wZHTML5中文学习网 - HTML5先行者学习网
搞定。2wZHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助