WebView和JS交互

 	网页代码,登录界面
   <html>

   <head>
      <meta charset="utf-8" />
      <title>登录页面</title>
      <script>
                function login(){

            var uername=document.getElementById("name").value;
            var uerpwd=document.getElementById("pwd").value


            webview.login(uername,uerpwd);
        }
         
      </script>
   </head>

   <body>
      <div align="center">
                用户名: <input type="text" id="name"/><br /><br />
                密 码: <input type="password" id="pwd"/><br /><br />
         <input type="submit" value="登录" οnclick="login()" /><br /><br />
         
         <a href="file:///android_asset/zhuce.html">注册</a>
      </div>

   </body>

</html>
	网页,注册界面
  <html>

   <head>
      <meta charset="UTF-8">
      <title>注册</title>
      <script>
                function login(){
            var username=document.getElementById("name").value;
            var pwd=document.getElementById("pwd").value;
//          调用安卓端的方法,把用户名和密码传过去,webview是你自己在安卓代码中注册的名字
            webview.ZhuCe(username,pwd);
        }
         
         
      </script>
   </head>

   <body>
      <div align="center">
                用户名 :<input type="text" id="name" /><br /><br />
                密 码:<input type="password" id="pwd" /><br /><br />
      <input type="submit" value="注册" οnclick="login()"/>
      </div>
   </body>

</html>

	//安卓中的代码
webview = (WebView) findViewById(R.id.webview);
        bar = (ProgressBar) findViewById(R.id.progress);
        tv = (TextView) findViewById(R.id.textview);

        // 设置显示的网页
        webview.loadUrl("file:///android_asset/index.html");
        // 添加JavaScript,第一个是对象,如果不是当前Activity,其他的类就New一个对象,
        // 第二个参数是别名,在Js里面调用方法的时候用的到
        webview.addJavascriptInterface(this, "webview");
        // 设置webview可以和js进行交互
        webview.getSettings().setJavaScriptEnabled(true);

        /**
         * 自己重写里面的两个方法,可用设置标题和进度条的进度
         */
        webview.setWebChromeClient(new WebChromeClient() {
// 设置页面的标题
@Override
public void onReceivedTitle(WebView view, String title) {
        super.onReceivedTitle(view, title);
        tv.setText(title);
        }

// 设置进度条的进度
@Override
public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);
        bar.setProgress(newProgress);
        }
        });

        /**
         * 可以设置ProgressBar的显示和隐藏
         */
        webview.setWebViewClient(new WebViewClient() {
// 开始的时候让ProgressBar显示
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        bar.setVisibility(View.VISIBLE);
        }

// 结束的时候让ProgressBar隐藏
@Override
public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        bar.setVisibility(View.GONE);
        }
        });

        }

@JavascriptInterface
public void login(String name, String pwd) {
        // 验证账号密码,正确的话就跳转到第二个页面
        if (name.equals("张三") && pwd.equals("123")) {
        Intent intent = new Intent(MainActivity.this, OtherActivity.class);
        startActivity(intent);
        }
        }

@JavascriptInterface
public void ZhuCe(String name, String pwd) {
        Toast.makeText(this, "用户名:" + name + "    ,密码:" + pwd, 0).show();
        // 安卓端调用js端的方法,安卓调用js的弹窗必须在主线程运行
        // 如果注册成功跳转回去登录页面,也就是跳转回去上一个页面
        if (name.equals("张三") && pwd.equals("123")) {
        runOnUiThread(new Runnable() {

@Override
public void run() {
        // 设置返回
        if (webview.canGoBack()) {
        webview.goBack();
        }
        }
        });
        }
        }

        // 设置可以返回上一个界面
   /*@Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK) {
         if (webview.canGoBack()) {
            webview.goBack();

            return true;
         }
      }
      return super.onKeyDown(keyCode, event);
   }
*/
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值