zoukankan      html  css  js  c++  java
  • android基础---->WebView的使用

    webView的使用

    我们通过一个小的测试程序来体会webView的简单使用,项目结构如下:

    一、 webView加载页面,重写shouldOverrideUrlLoading方法,不使用系统默认的浏览器:

    private WebView webView;
    private EditText editText;
    private String htmlUrl = "file:///android_asset/index.html";
    
    private void initComponent() {
        webView = (WebView) findViewById(R.id.webView);
        editText = (EditText) findViewById(R.id.editText);
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initComponent();
    
        webView.getSettings().setJavaScriptEnabled(true); // 支持javascript
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url); // 根据传入的参数再去加载新的网页
                return true; // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器
            }
        });
    }

    二、 用webView加载url资源:

    // 请求url资源:
    public void searchURL(View view) {
        String urlStr = editText.getText().toString();
        webView.loadUrl(htmlUrl);
    }

    三、 用webView加载数据:

    // 加载html代码片断
    public void loadDataMethod(View view) {
        String summary = "<html><body>You scored <b>192</b> points.</body></html>";
        webView.loadData(summary, "text/html", "utf-8");
    }

    四、 我们还可心在请求的html资源中,加入带有andoroid支持的JS代码。例如在js中使用toast,首先我们定义一个类,供在js中调用:

    public class AppUseJSInterface {
        Context mContext;
    
        AppUseJSInterface(Context c) {
            mContext = c;
        }
    
        @JavascriptInterface
        public void showToast(String toast) {
            Toast.makeText(mContext, toast, Toast.LENGTH_LONG).show();
        }
    }

    接着我们在android代码中使用addJavascriptInterface方法,关联jsandroid

    // 请求html资源,在js中使用android
    public void searchHTML(View view) {
        // 给这个对象起的别名叫“huhxJS”
        webView.addJavascriptInterface(new AppUseJSInterface(this), "huhxJS");
        webView.loadUrl(htmlUrl);
    }

    最后我们在js中使用android定义的接口:

    <script type="text/javascript">
        function androidJS() {
            var username = document.getElementById("username").value;
            var password = document.getElementById("password").value;
            huhxJS.showToast("username: " + username + ", password: " + password);
        }
    </script>

    五、 我们还可以在andoird中调用js代码,如下:

    android调用js中的javascriptJS函数:

    // 在android中调用js
    public void useJSInAndroid(View view) {
        String name = "I love you";
        webView.loadUrl("javascript:javascriptJS('" + name + "')");
    }

    js中定义javascriptJS()函数:

    function javascriptJS(some) {
        huhxJS.showToast(some);
    }

    六、 实现webView的回退功能:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // Check if the key event was the Back button and if there's history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_FORWARD && webView.canGoForward()) {
            webView.goForward();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    七、 测试加载用的页面:index.html

    <html>
        <head>
            <script type="text/javascript">
                function androidJS() {
                    var username = document.getElementById("username").value;
                    var password = document.getElementById("password").value;
                    huhxJS.showToast("username: " + username + ", password: " + password);
                }
                function javascriptJS(some) {
                    huhxJS.showToast(some);
                }
            </script>
        </head>
        <body>
            <form action="#" method="get">
                <font color="red">username:</font> <input type="text" id="username" name="username"><br>
                <font color="red">password:</font> <input type="password" id="password" name="password"><br>
                <input type="submit" value="submit">
            </form>
        <Button onclick="androidJS()">ClickOnMe</Button>
        </body>
    </html>

    友情链接

  • 相关阅读:
    oracle-sql脚本
    vue生命周期
    使用vue搭建项目(创建手脚架)
    bootcss
    miniMobile(手机)
    mui(手机)
    layui
    Element
    如何学好Spring
    使用Vue做评论+localStorage存储(js模块化)
  • 原文地址:https://www.cnblogs.com/huhx/p/webViewJS.html
Copyright © 2011-2022 走看看