• 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/

  • 相关阅读:
    Linux中ctrl+z 、ctrl+c、 ctrl+d区别
    linux文件与用户权限的设置
    查找jdk的安装目录
    linux上修改防火墙操作
    linux上打包与压缩操作
    安装hive操作参考视频
    linux上设置环境变量每次需要source /etc/profile问题处理
    【c语言趣味编程100例】出售金鱼
    【c语言趣味编程100例】三色球问题
    【c语言】递归实现strlen()函数
  • 原文地址:https://www.cnblogs.com/Westfalen/p/6952341.html
Copyright © 2020-2023  润新知