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

作者:junjie 时间:2022-03-01 20:00:57 

在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>


  
搞定。

标签:android,webview,Java,JavaScript
0
投稿

猜你喜欢

  • 详解二维码生成工厂

    2022-09-26 11:26:13
  • mybatis @InsertProvider报错问题及解决

    2023-09-27 15:49:59
  • Unity利用材质自发光实现物体闪烁

    2021-07-03 20:42:26
  • SpringBoot线程池和Java线程池的使用和实现原理解析

    2022-06-27 07:22:30
  • SpringCloud如何解决服务之间的通信问题

    2023-03-27 03:13:05
  • SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解

    2022-01-31 05:29:10
  • Android中自定义ImageView添加文字设置按下效果详解

    2021-10-08 08:13:14
  • Java多线程 volatile关键字详解

    2023-07-16 02:13:31
  • MyBatis-Plus找不到Mapper.xml文件的几种解决方法

    2023-11-24 03:37:52
  • java获取ip地址示例

    2021-12-25 07:04:22
  • 如何使用BufferedReader循环读文件

    2022-04-20 17:32:23
  • Android中 视频屏幕左半部分上下滑动改变亮度右半部分上下滑动改变声音

    2021-08-13 02:57:12
  • C#创建、读取和修改Excel的方法

    2023-02-24 06:28:16
  • IntelliJ IDEA 2020.1.2激活工具下载及破解方法免费可用至2089年(强烈推荐)

    2023-07-29 09:22:11
  • SpringBoot整合websocket实现即时通信聊天

    2022-12-12 15:14:32
  • Unity实现游戏卡牌滚动效果

    2023-09-20 10:54:23
  • c# 断点续传的实现

    2023-07-01 22:41:02
  • C#算法之实现阿姆斯特朗数

    2022-08-22 17:57:24
  • Android实现点击缩略图放大效果

    2022-11-10 21:47:23
  • Android中TabLayout结合ViewPager实现页面切换效果

    2023-02-03 07:51:05
  • asp之家 软件编程 m.aspxhome.com