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>

    友情链接

  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/huhx/p/webViewJS.html
Copyright © 2011-2022 走看看