public class JavaAndJSActivity extends Activity implements View.OnClickListener {
    private EditText etNumber;
    private EditText etPassword;
    private Button btnLogin;
    /**
     * 加载网页或者说H5页面
     */
    private WebView webView;

    /**
     * Find the Views in the layout<br />
     * <br />
     * Auto-created on 2016-07-28 11:43:37 by Android Layout Finder
     * (http://www.buzzingandroid.com/tools/android-layout-finder)
     */
    private void findViews() {
        setContentView(R.layout.activity_java_and_js);
        etNumber = (EditText) findViewById(R.id.et_number);
        etPassword = (EditText) findViewById(R.id.et_password);
        btnLogin = (Button) findViewById(R.id.btn_login);
        btnLogin.setOnClickListener(this);

        initWebView();
    }

    /**
     * Handle button click events<br />
     * <br />
     * Auto-created on 2016-07-28 11:43:37 by Android Layout Finder
     * (http://www.buzzingandroid.com/tools/android-layout-finder)
     */
    @Override
    public void onClick(View v) {
        if (v == btnLogin) {
            // Handle clicks for btnLogin
            login();
        }
    }

    private void login() {
        String numebr = etNumber.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        if (TextUtils.isEmpty(numebr) || TextUtils.isEmpty(password)) {
            Toast.makeText(JavaAndJSActivity.this, "账号或者密码为空", Toast.LENGTH_SHORT).show();
        } else {
            //登录
            login(numebr);
        }
    }

    /**
     * Java调用javaScript
     *
     * @param numebr
     */
    private void login(String numebr) {
        webView.loadUrl("javascript:javaCallJs(" + "'" + numebr + "'" + ")");
        setContentView(webView);
    }

    private void initWebView() {
        webView = new WebView(this);
        WebSettings webSettings = webView.getSettings();
        //设置支持javaScript脚步语言
        webSettings.setJavaScriptEnabled(true);

        //支持双击-前提是页面要支持才显示
//        webSettings.setUseWideViewPort(true);

        //支持缩放按钮-前提是页面要支持才显示
        webSettings.setBuiltInZoomControls(true);

        //设置客户端-不跳转到默认浏览器中
        webView.setWebViewClient(new WebViewClient());

        //设置支持js调用java
        webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android");

        //加载网络资源
//        webView.loadUrl("http://10.0.2.2:8080/assets/JavaAndJavaScriptCall.html");      //加载assets文件夹下的资源
        webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html");

        //显示页面
//        setContentView(webView);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        findViews();
    }

    /**
     * js可以调用该类的方法
     */
    class AndroidAndJSInterface{
        @JavascriptInterface
        public void showToast(){
            Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show();
        }
    }
}

JavaAndJavaScriptCall.html
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <script type="text/javascript">

    function javaCallJs(){
         document.getElementById("content").innerHTML +=
             "<br\>java调用了js无参函数";
    }

    function javaCallJs(arg){
         document.getElementById("content").innerHTML =
             ("欢迎:"+arg );
    }

   function showDialog(){
      alert("你好,我是来自javascript");
   }

    </script>

</head>

<body>

<div align="left" id="content"> 555</div>
<div align="right">光临</div>

<p><img src="http://atguigu.com/images/logo.gif"></p>

<input type="button" value="点击Android被调用" onclick="window.Android.showToast()" />

</body>

</html>

最新文章

  1. React在开发中的常用结构以及功能详解
  2. linux启动时文件系统错误问题
  3. python 写文件,utf-8问题
  4. python进阶学习笔记(四)--多线程thread
  5. NSNumber和NSValue
  6. android之外部文件存储和读取
  7. 关于windows下c/c++的rand()的一个测试
  8. C++字符类型总结区别wchar_t,char,WCHAR
  9. 八、jdk工具之JvisualVM、JvisualVM之一--(visualVM介绍及性能分析示例)
  10. vs2013下使用Assist X的破解方法
  11. Python自动化运维之21、CSS
  12. ssh框架-Struts2(二)
  13. 从零开始搭建springboot+mybatis+thymeleaf增删改查示例
  14. 中兴F660光猫改桥接
  15. Python datetime与timestamp之间的转换
  16. [数位dp] spoj 10738 Ra-One Numbers
  17. 接之前的文章,VS2017中使用Spring.NET配置以及使用方法(framework4.6.1超详细)
  18. 利用pyusb来查询当前所以usb设备
  19. WinFrom弹出输入框
  20. Google Chrome Resize Plugin

热门文章

  1. MySQL GUI Tools 使用简介
  2. SecureCRT设置超级终端
  3. 剑指Offer面试题51(Java版):数组中反复的数字
  4. 终于会用c#中的delegate(委托)和event(事件)了 [转]
  5. 第1章 为什么创造WPF、第2章 XAML揭秘
  6. 18. 使用模板【从零开始学Spring Boot】
  7. 如何查看在Heroku上部署了那些站点
  8. javascript 匿名函数和模块化
  9. VueJS绑定缩写:可省略v-on、v-bind
  10. [Java开发之路](23)装箱与拆箱