zoukankan      html  css  js  c++  java
  • 安卓原生与hml交互(WebView基础)

    • WebView加载页面

    webView有两种加载方式,

    加载网络地址

    webView.loadUrl("www.xxx.com/index.html");

    加载本地资源

    webView.loadUrl("file:///android_asset/example.html");
    • 添加请求头信息,在这里可以加入认证信息等等
    Map<String,String> map=new HashMap<String,String>();
    map.put("taken","1234");
    webView.loadUrl("http://192.168.99.101:8080/xiaoyanAPI/test1",map);
    • 设置页面内链接跳转,拦截了跳转事件,在相应函数中做对应的处理。
    webView.setWebViewClient(new WebViewClient() {
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            });
    • 设置允许js方法执行
            WebSettings webSettings=webView.getSettings();
            webSettings.setJavaScriptEnabled(true);
    • 返回键返回上个页面(默认webView将页面存放到缓存栈中)
    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                if (webView.canGoBack()) {
                    webView.goBack();//返回上一浏览页面
                    return true;
                } else {
                    finish();//关闭Activity
                }
            }
            return super.onKeyDown(keyCode, event);
        }
    • 安卓调用html的js方法

    调用无返回值方法可去掉后面的回掉函数,该函数接受js函数返回的数据。

     mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                Log.e(TAG, "onReceiveValue value=" + value);
            }
        });
    • js调用安卓原始里的方法。

    在Android4.2以上可以直接使用@JavascriptInterface注解来声明,下面是在一个本地Java方法

     public class JsInteration {
        @JavascriptInterface
        public String back() {
            return "hello world";
        }
    }

    定义完这个方法后再调用mWebView.addJavascriptInterface()方法:

     mWebView.addJavascriptInterface(new JsInteration(), "android");

    那么在js中怎么来调用呢?

    <script type="text/javascript">
         function s(){
         //调用Java的back()方法
        var result =window.android.back();
        document.getElementById("p").innerHTML=result;
        }
    
    </script>
  • 相关阅读:
    PE文件简介
    hook键盘驱动中的分发函数实现键盘输入数据的拦截
    遍历系统中加载的驱动程序以及通过设备对象指针获取设备对象名称
    如何利用git shell提交代码到github
    驱动开发中的常用操作
    3.1_栈_顺序存储结构(数组形式)
    2.6_链表深入
    2.5_线性表的链式存储结构_双向链表
    2.4_线性表的链式存储结构_单链表具体实现
    2.3_线性表的链式存储结构_单链表
  • 原文地址:https://www.cnblogs.com/wuyoucao/p/6785518.html
Copyright © 2011-2022 走看看