Android与WebView交互

Java端

package com.baozilichao.jsandandroid;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    private WebView mWebView = null;
    Button but, but1, but2, but3, but4, but5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        but = (Button) findViewById(R.id.but);
        but1 = (Button) findViewById(R.id.but1);
        but2 = (Button) findViewById(R.id.but2);
        but3 = (Button) findViewById(R.id.but11);
        but4 = (Button) findViewById(R.id.but21);
        but5 = (Button) findViewById(R.id.but31);
        mWebView = (WebView) findViewById(R.id.webview);
        inindate();
        showWebView();

    }

    private void dialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setMessage("只是要累死我!")
                .setTitle("快累死了")
                .setPositiveButton("已经累死,有事烧纸(真的想删除吗?)", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        mWebView.loadUrl("javascript:showHtmlcallJava2()");
                        dialogInterface.dismiss();
                        Toast.makeText(MainActivity.this, "你已经删除", Toast.LENGTH_SHORT).show();
                    }
                }).
                setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置取消按钮
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    }
                }).setNeutralButton("忽略", new DialogInterface.OnClickListener() {//设置忽略按钮
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                Toast.makeText(MainActivity.this, "忽略", Toast.LENGTH_SHORT).show();
            }
        });
        //参数都设置完成了,创建并显示出来
        builder.create().show();
    }

    private void inindate() {
        //提示删除图片
        but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog();
            }
        });
        //字号增加
        but1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mWebView.loadUrl("javascript:addclick()");
            }
        });
        //字号减小
        but2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mWebView.loadUrl("javascript:disclick()");
            }
        });
        //更改背景
        but3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mWebView.loadUrl("javascript:backgroungclick1()");
            }
        });
        but4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mWebView.loadUrl("javascript:backgroungclick2()");
            }
        });
        but5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mWebView.loadUrl("javascript:backgroungclick3()");
            }
        });


    }

    @SuppressLint("SetJavaScriptEnabled")
    private void showWebView() {
        mWebView.requestFocus();
        mWebView.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View view, int i, KeyEvent keyEvent) {
                if (keyEvent.getAction() == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {

                }
                return false;
            }
        });
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);//实现交互关键句
        webSettings.setDefaultTextEncodingName("UTF-8");

        class JsObject {
            //js调用Java代码
            @JavascriptInterface
            public String toString() {
                return "字符串";
            }

            @JavascriptInterface
            public String HtmlcallJava() {
                return "更改字符串";
            }

            @JavascriptInterface
            public String HtmlcallJava2(final String Param) {
                return "更改字符串" + Param;
            }

            //java调用js代码
            @JavascriptInterface
            public void JavacallHtml() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        mWebView.loadUrl("javascript:showFromHtml()");
                        Toast.makeText(MainActivity.this, "clickBtn", Toast.LENGTH_SHORT).show();
                    }
                });
            }

            @JavascriptInterface
            public void JavacallHtml2() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mWebView.loadUrl("javascript:showFromHtml2(123)");
                        Toast.makeText(MainActivity.this, "clickBtn", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
        mWebView.addJavascriptInterface(new JsObject(), "injiectObject");
        mWebView.loadData("file:///android_asset/index.html", "text/html", null);
//        mWebView.loadData("http://127.0.0.1:8020/Demo4/index.html", "text/html", null);

        mWebView.addJavascriptInterface(new JsObject(), "jsObj");
        mWebView.loadUrl("file:///android_asset/index.html");
//        mWebView.loadUrl("http://127.0.0.1:8020/Demo4/index.html");

    }
}

html端:

<!DOCTYPE html>
<html>


<head>
    <meta charset="utf-8"/>
    <title></title>
    <style>
        * {
        background: lightblue;
        }
    </style>
</head>

<body>
<br>
<br>

<br>
<input type="button" value="恢复图片" onclick="showHtmlcallJava()"/>
<br>
<input type="button" value="删除图片" onclick="showHtmlcallJava2()"/>
<br>
<div id="img_big">
    <img id="img_circle" src="circle1.png"/>
</div>
<br>
<p id="texttest">这是一段测试文字</p>
<br>
<input type="button" value="字体+" onclick="addclick()"/>
<br>
<input type="button" value="字体-" onclick="disclick()"/>
<br>
<input type="button" value="背景1" onclick="backgroungclick1()"/>
<br>
<input type="button" value="背景2" onclick="backgroungclick2()"/>
<br>
<input type="button" value="背景3" onclick="backgroungclick3()"/>
<br>
<br>

<br>

<br>
<input id="id_input" style="width: 90%" type="text" value="null"/>
<br>
<input type="button" value="JavacallHtml" onclick="window.jsObj.JavacallHtml()"/>

<br>

<br>

<br>

<input id="id_input2" style="width: 90%" type="text" value="null"/>
<br>
<input type="button" value="JavacallHtml2" onclick="window.jsObj.JavacallHtml2()"/>


<input type="file" name="headImage[]"/>
<br>
<input type="file" name="headImage[]"/>
<br>

</body>
<script type="text/javascript" language="javascript">
        function showHtmlcallJava() {
        var img_f = document.getElementById("img_big");
            img_f.style.display = ""

        }

        function showHtmlcallJava2() {
            var img_f = document.getElementById("img_big");
            img_f.style.display = "none"
        }

        function showFromHtml() {
            document.getElementById("id_input").value = "Java call Html";
        }

        function showFromHtml2(param) {
            document.getElementById("id_input2").value = "Java call Html :" + param;
        }
        var curfontsize = 15;
        var curlineheight = 18;

        function disclick() {
            document.getElementById("texttest").style.fontSize = (--curfontsize) + 'px';
            document.getElementById('texttest').style.lineHeight = (--curlineheight) + 'px';
        }

        function addclick() {
            document.getElementById("texttest").style.fontSize = (++curfontsize) + 'px';
            document.getElementById("texttest").style.lineHeight = (++curlineheight) + 'px';

        }
        function backgroungclick1() {
            document.body.style.background = "deepskyblue";
        }

        function backgroungclick2() {
            document.body.style.background = "greenyellow";
        }

        function backgroungclick3() {
            document.body.style.background = "plum";
        }

</script>


</html>

这里写图片描述
对!这里有个Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值