• android 和 js 交互


    1.html代码

    <script type="text/javascript">
        function javacalljs(){
             document.getElementById("content").innerHTML = "JAVA调用了JS的无参函数";
        }
        function javacalljswith(arg){
             document.getElementById("content").innerHTML = (arg);
        }
    </script> 
    <input type="button" value="点击调用java代码" onclick="window.android1.jsCall()" /> 
    <input type="button" value="点击调用java代码并传递参数" onclick="window.android1.jsCall('paramsvalue')" />  

    2.java代码

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.os.Bundle;
    import android.webkit.JavascriptInterface;
    import android.webkit.WebView;
    import android.widget.Toast;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    import butterknife.OnClick;
    
    /**
     * Android  和 js 的互相调用
     * 布局文件为 2个 button,一个WebView
     */
    public class ActivityWebView extends Activity {
        @BindView(R.id.webView)
        WebView webView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ble);
            ButterKnife.bind(this);
    
            webView.loadUrl("http://192.168.61.104:8080/update/android_js.html");
            webView.getSettings().setJavaScriptEnabled(true);// 启用javascript
            webView.addJavascriptInterface(this, "android1"); // android1 为html中的别名
        }
    
        /**
         * 被js调用的函数
         */
        @JavascriptInterface
        public void jsCall() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(ActivityWebView.this, "无参数的方法被js调用", Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        /**
         * 被js调用的函数 jsCall
         * jsCall这个为html中的函数名字
         * 必须加上     @JavascriptInterface 这个注解
         */
        @JavascriptInterface
        public void jsCall(final String params) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    new AlertDialog.Builder(ActivityWebView.this).setMessage(params).show();
                }
            });
        }
    
        @OnClick(R.id.btn0)
        public void btn0() {
            webView.loadUrl("javascript:javacalljs()");// 调用无参的js:  javacalljs 为js的函数名
        }
    
        @OnClick(R.id.btn1)
        public void btn1() {
            String params = "params";// 调用有参的js:  javacalljswith 为js的函数名,params 为参数值
            webView.loadUrl("javascript:javacalljswith('" + params + "')");
        }
    }

    参考: http://blog.csdn.net/leejizhou/article/details/50894531/

  • 相关阅读:
    WinForm多线程+委托防止界面假死
    C#中异步及winform中界面假死
    js如何判断当前文本的输入状态——中文输入法的那些坑
    数据库主键设计之思考
    node.js使用superagent实现模拟登陆功能(包含下载验证码功能)
    application.properties在Spring Boot项目中的位置
    ubuntu18.04安装chromium浏览器
    ubuntu 18.04安装mysql 8
    Spring Boot学习笔记——搭建一个最简单的hello world
    ubuntu 18.04安装jdk8和eclipse
  • 原文地址:https://www.cnblogs.com/Westfalen/p/6952341.html
Copyright © 2020-2023  润新知