首页 > 代码库 > WebView之js调用Android类的方法传递数据

WebView之js调用Android类的方法传递数据

1,具体的思路如下:

  在android中写一个Activity,里面写一个webview,这个webview加载本地的一个html文件,显示这个网页,这个网页包括一个用户名和密码的输入框和两个按钮(只有登陆按钮有用),输入用户名密码之后调用android中的类,并把输入的数据传过去,再在android中输出出来(具体你那数据做什么操作就看你的需求了),这样就做大额js与android数据交互的效果了:

  在android端,一些webviwe的设置和自定义类的写法如下源码:

  package com.example.webview;

  import android.app.Activity;
  import android.os.Bundle;
  import android.webkit.JavascriptInterface;
  import android.webkit.WebChromeClient;
  import android.webkit.WebSettings;
  import android.webkit.WebView;

  public class MainActivity extends Activity {
    private WebView webview;
    private String URL = "http://192.168.31.122/word2/login.html";//这是你要访问你html文件的存放地址,我这个是放在appache中的word文件夹下的login.html文件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      webview = (WebView) findViewById(R.id.webView1);
      WebSettings webset = webview.getSettings();
      webset.setJavaScriptEnabled(true);// 表示webview可以执行服务器端的js代码
      webview.setWebChromeClient(new WebChromeClient(){});
      webview.addJavascriptInterface(new JsObject(),"jsObject");
      webview.loadUrl(URL);
    }

    public class JsObject {
      @JavascriptInterface
      public void getMessage(String name, String pwd) {
        // TODO Auto-generated method stub
        System.out.println("==="+"name:" + name + "---pwd:" + pwd);
      }
    }

  }

  而xml比较简单,只是一个比较简单的webview而已,代码如下:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <WebView
      android:id="@+id/webView1"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />

  </LinearLayout>

  对于要加载的html文件只要放在你要访问的地方就可以,比如appache下,具体代码如下:

  <!DOCTYPE html>

  <html>
    <head>
      <script>
        function login(){
          var th = document.form;
          var user = th.user.value;
          if(user==""){
            alert("请输入用户名!");
          }else{
            var name = th.user.value;
            var pwd = th.pwd.value;
            var name2 = jsObject.getMessage(name,pwd);
          }
        }
      </script>
    </head>
    <body>
      <form name=‘form‘ method=‘post‘ class=‘form‘ action=‘‘>
        <table id=‘login_table‘>
          <tr>
            <td>
              <span>账号:</sapn>
            </td>
            <td>
              <input type=‘text‘ class=‘usr‘ name=‘user‘ value=http://www.mamicode.com/‘‘/>
            </td>
            <td></td>
          </tr>
          <tr>
            <td>
              <span>密码:</sapn>
            </td>
            <td>
              <input type=‘password‘ class=‘psw‘ name=‘pwd‘ value=http://www.mamicode.com/‘‘/>
            </td>
            <td></td>
          </tr>
          <tr>
            <td></td>
            <td>
              <input type="file" value="http://www.mamicode.com/上传图片" />
              <button class=‘denglu‘ onclick="login()">登陆</button>
              <button class=‘clear‘>清空</button>
            </td>
            <td></td>
          </tr>
        </table>
      </form>
    </body>
  </html>