关闭

webview_android 与js调用

111人阅读 评论(0) 收藏 举报
分类:

1.Webview的使用

•WebView(网络视图)能加载显示网页

•String pathUrl = "https://www.youxuanbao.cn";

•webview = (WebView) findViewById(R.id.webview);

•webview.loadUrl(pathUrl);

2.Webview与js的交互

•在交互之前需要设置的参数

•WebSettings webSettings = mWebView.getSettings();

•webSettings.setJavaScriptEnabled(true);//Android容许执行js脚本需要设置

•//Android(Java)与js(HTML)交互的接口函数 jsObj 为桥连对象

•mWebView.addJavascriptInterface(getHtmlObject(), "jsObj");

•mWebView.loadUrl("file:///android_asset/index.html");

3.Android与JavaScript交互的四种情况

1)HTML中js调用Android(Java)代码

2)HTML中js调用Android(Java)代码(带参数)

3)Android(Java)调用HTML中js代码

4)HTML中js调用Android(Java)代码(带参数)

4.说明

•Android访问url网址,需在AndroidManifest.xml文件,配置容许访问网络的权限:
<uses-permission android:name="android.permission.INTERNET" />

•Android(Java)调用js(HTML)时,使用的mWebView.loadUrl("javascript: showFromHtml()");函数需在UI线程运行,因为mWebView为

网络的权限:
<uses-permission android:name="android.permission.INTERNET" />

•Android(Java)调用js(HTML)时,使用的mWebView.loadUrl("javascript: showFromHtml()");函数需在UI线程运行,因为mWebView为UI

网络的权限:
<uses-permission android:name="android.permission.INTERNET" />

•Android(Java)调用js(HTML)时,使用的mWebView.loadUrl("javascript: showFromHtml()");函数需在UI线程运行,因为mWebView为UI控件

 

下面示例总结这四种情况,直接上干货:

 

1) Android(Java)

    private Object getHtmlObject(){
        Object insertObj = new Object(){

            //HTML中js调用Android(Java)代码
            public String HtmlcallJava(){
                return "Html call Java";
            }
            // HTML中js调用Android(Java)代码(带参数)
            public String HtmlcallJava2(final String param){
                return "Html call Java : " + param;
            }
            //Android(Java)访问js(HTML)代码
            @SuppressWarnings("unused")
            public void JavacallHtml(){
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //Android(Java)访问js(HTML)端代码是通过loadUrl函数实现
                        mWebView.loadUrl("javascript: showFromHtml()");
                        Toast.makeText(JSAndroidActivity.this, "clickBtn", Toast.LENGTH_SHORT).show();
                    }
                });
            }
            //Android(Java)调用HTML中js代码(带参数)
            public void JavacallHtml2(){
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mWebView.loadUrl("javascript: showFromHtml2('IT-homer blog')");
                        Toast.makeText(JSAndroidActivity.this, "clickBtn2", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        };

        return insertObj;
    }

 

2) js(HTML)

<meta charset="utf-8">
<title>jsandroid_test</title>
<script type="text/javascript" language="javascript"> 
    
    function showHtmlcallJava(){
        var str = window.jsObj.HtmlcallJava();
        alert(str);
    }
    
    function showHtmlcallJava2(){
        var str = window.jsObj.HtmlcallJava2("IT-homer blog");
        alert(str);
    }
    function showFromHtml(){
        document.getElementById("id_input").value = "Java call Html";
    }
    
    function showFromHtml2(param){
        document.getElementById("id_input2").value = "Java call Html : " + param; 
    }
</script>


</head>


<body>

webview– js与android之间的交互
<br>
<br>
<input type="button" value="HtmlcallJava" onclick="showHtmlcallJava()" />
<br>
<br>
<input type="button" value="HtmlcallJava2" onclick="showHtmlcallJava2()" />
<br>
<br>
<input id="id_input" style="width: 90%" type="text" value="null" />
<br>
<br>
<input type="button" value="JavacallHtml" onclick="window.jsObj.JavacallHtml()" />
<br>
<br>
<input id="id_input2" style="width: 90%" type="text" value="null" />
<br>
<br>
<input type="button" value="JavacallHtml2" onclick="window.jsObj.JavacallHtml2()" />


</body>


</html>

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9015次
    • 积分:165
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类