关闭

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

标签: Androidhtmlwebview与web端交互
6152人阅读 评论(0) 收藏 举报
分类:

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

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android-通过WebView获取html内容

前言有时候我们可能需要做一些模拟操作,比如爬虫,一般我们会直接采用HTTP请求实现扒取网页内容,不过,我们可以使用WebView来实现。如何实现WebView初始化,我们为其设置参数,为其设置嵌入Ja...
  • z82367825
  • z82367825
  • 2016-08-12 00:28
  • 15363

混合开发之webView加载html,android 和 html之间进行数据交互

现在混合开发比较普遍了,其实早就该学学了,只限于自己对html不是很熟,搭的界面太丑了,哈哈…今天写Demo的需求是这样的 1、在一个界面里,半面html,半面android原生控件。 2、点击h...
  • z171422696
  • z171422696
  • 2017-01-23 16:08
  • 2045

android webview中如何实现html与手机本地数据的交互

在webview开发中,往往不止简单的加载一个页面显示那么简单,常常有将手机本地的数据放到html上显示和将html上操作的数据保存到手机本地的情况,那么如何实现这种数据交互呢: 一:webvie部...
  • Jhone_csdn
  • Jhone_csdn
  • 2015-05-13 20:03
  • 2715

[android] 获取网页中的HTML数据

若想获取
  • u011596810
  • u011596810
  • 2014-09-02 16:31
  • 3457

Android activity 中如何获取webview 中加载的html中输入框的值

现有一个activity,里面就只有一个控件 webview,webview加载本地的一个登录的html,然后在输入框中输如账号密码,那么加载这个html的webview或者activity是如何获取...
  • meihong2626
  • meihong2626
  • 2017-01-19 13:18
  • 897

Android使用WebView不加载页面(页面空白)

WebView页面加载为空
  • PLUSLEELED
  • PLUSLEELED
  • 2017-05-05 14:21
  • 2329

关于WebView加载URL时显示一片空白的问题

问题: 当用WebView加载URL时,WebView只是显示一片空白,而没有正常加载所需要的内容; 1》布局文件: <RelativeLayout xmlns:android="http://...
  • cxc19890214
  • cxc19890214
  • 2015-09-04 22:02
  • 11216

Android使用WebView加载网页及数据

今天主要介绍一下Android的一个原生组件-WebView。 在Api中关于这个类的介绍大致就是这是一个可以显示网页的视图,如:webView.loadUrl("http://www.baidu....
  • wubihang
  • wubihang
  • 2016-09-17 23:28
  • 7906

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

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

Android 服务端返回的数据含有html字段时的解析方式

如果服务器端返回的数据结构中包含html类型字段, 通常在客户端有两种控件来渲染 第一个就是TextView  通常HTML字段还包含Img标签, 处理方式为  /**      * html...
  • qq_35425524
  • qq_35425524
  • 2017-02-16 17:20
  • 281
    个人资料
    • 访问:51093次
    • 积分:686
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:2篇
    • 译文:0篇
    • 评论:17条
    最新评论