Android webview加载Html页面,传参到Html并获取返回值

原创 2016年05月30日 13:51:04

1.Android端代码

public class MainActivity extends Activity {

private static final String LOGTAG = "MainActivity";
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final WebView myWebView = (WebView) findViewById(R.id.myWebView);

    WebSettings settings = myWebView.getSettings();
    settings.setJavaScriptEnabled(true);//设置JS可用
    myWebView.addJavascriptInterface(new JsInteration(), "control");//传递对象进行交互
    myWebView.setWebChromeClient(new WebChromeClient() {});
    myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {//当页面加载完成
            super.onPageFinished(view, url);            


           if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){//当Android SDK>=4.4时
               callEvaluateJavascript(myWebView);
           }else {
            callMethod(myWebView);
           }
      }

    });
    myWebView.loadUrl("file:///android_asset/js_java_interaction.html");
}

private void callMethod(WebView webView) {
    String call = "javascript:sayHello()";

    call = "javascript:alertMessage(\"content\")";

   // call = "javascript:toastMessage(\"Hello World\")";

    //call = "javascript:sumToJava(1,2)";

    //call = "javascript:mult1(3,3)";

    webView.loadUrl(call);

}

public class JsInteration {

    @JavascriptInterface
    public void toastMessage(String message) {

        Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
    }

    @JavascriptInterface
    public void onSumResult(int result) {

        System.out.println(LOGTAG+"_onSumResult result=" + result);
    }

    @JavascriptInterface
    public void onMultResult(int result) {

        System.out.println(LOGTAG+"_onMultResult result=" + result);
    }
}

private void callEvaluateJavascript(WebView webView) {

      webView.evaluateJavascript("mult2(3,3)", new ValueCallback<String>() {

      @Override
      public void onReceiveValue(String value) {         

          System.out.println(LOGTAG+"_onReceiveValue value=" + value);
          Toast.makeText(MainActivity.this, "onReceiveValue value=" + value, Toast.LENGTH_LONG).show();
      }});
    }

}

2.Html页面

<html> <script type="text/javascript">   
       function sayHello() {   alert("Hello")    }
       function alertMessage(message) {   alert(message)    }
       function toastMessage(message) 
       {  window.control.toastMessage(message)    }
       function sumToJava(number1, number2){
         window.control.onSumResult(number1 + number2)    }  
       function mult1(x,y) {
        window.control.onMultResult(x*y)
       }     
       function mult2(x,y) {
        return  x*y;
       }     
      function sub(x,y) {
       return  x-y;
       }
 <body> <center> <p>Android与Javascript之间的交互.</p> </center> </body>
  </html> 

3.运行结果
这里写图片描述
4.Demo下载地址
http://download.csdn.net/detail/sanyang730/9535274

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android WebView 与JS的数据交互

关于WebView 我们知道目前android市场上的一些应用采用的开发方式大致分为三种:Native App、Web App、Hybrid App。本文主要是Hybrid App中实现的主要技术n...

Android向网络提交数据并获取返回结果

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/53705802 本文出自【吴孝城的CSDN博客】 配方介绍Android通过HttpUR...
  • wu_wxc
  • wu_wxc
  • 2016年12月17日 11:38
  • 1650

Android基础入门教程——7.5.6 WebView处理网页返回的错误码信息

嘿嘿,假如你们公司是做HTML5端的移动APP的,就是通过WebView来显示网页的,假如你访问的网页 不存在,或者其他错误,报404,401,403,30X等错误的状态码,如果直接弹出WebVie...

Android - webview原生调用js并且得到返回值

说明: webview原生调用js并且得到返回值,这个需求,4.4之前都是通过各种方法实现的,这里有一个博客:Android - webview原生和JavaScript(js)交互的几种方式 ...

Android webview中Java调用javascript并获取返回值

Android中很多直接显示网页的需求,但是很错不单单只是显示网页就可以了,还需要与网页进行交互,就是所谓的Java与javascript交互。 如何实现: 实现Java和js交互十分便捷。通常只...

Android 网络:使用URLConnection提交请求,获取html代码加载WebView

概述 URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间的通信连接。 程序可以通过URLConnection实例向该URL发送请求,...

Android中WebView加载本地Html,与JavaScript与Android方法相互传值

最近在做项目中,要使用HightChart来实现心电图,于是,使用WebView加载本地html页面,但是数据是通过蓝牙设备采集的数据,用Java代码获取的数据,需要将数据传到JavaScript中去...

Android+HTML——html在Android程序运行以及互相传值

Android+HTML——html在Android程序运行以及互相传值 效果图: 相关代码: ...

WebView的配置和网页参数传递

第一篇博客,最近在做关于WebView的项目,因为现在的开发为了减小安装包的大小,经常采用H5和原生安卓的混合开发模式,所以也研究了一下关于android网页的一些特性。同时也是为了方便以后开发是遇到...
  • hkq463
  • hkq463
  • 2016年07月15日 12:32
  • 1464

webview中Android和Js通讯互调并传参数

Js调用安卓方法 1、初始化WebView WebSettings settings = mWebview.getSettings(); settings.setJavaScript...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android webview加载Html页面,传参到Html并获取返回值
举报原因:
原因补充:

(最多只允许输入30个字)