android WebView解析

概述

WebView是一个特殊的控件, 用来加载网页。它基于WebKit引擎,支持向前和向后导航历史,放大和缩小,进行文本搜索,JS互调,上传文件等等。下面从几方面简单介绍:

  • 基本配置
  • 基础使用
  • 与JS互调

基本配置

setCacheMode(WebSettings.LOAD_NO_CACHE);//设置缓存方式
setPluginsEnabled(true);  //支持插件 
setSupportZoom(true);  //支持缩放 
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持内容重新布局  
supportMultipleWindows();  //多窗口 
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  //关闭webview中缓存 
setAllowFileAccess(true);  //设置可以访问文件 
setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点
setBuiltInZoomControls(true); //设置支持缩放 
setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 
setLoadWithOverviewMode(true); // 缩放至屏幕的大小
setLoadsImagesAutomatically(true); //支持自动加载图片

基本使用

webView.loadUrl(String Url) //加载一个网页

webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
                webView.loadUrl(url);
                return true;
            }
        });

webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
                   //newProgress:网页加载进度
        }
    });        

还有一系列方法可以重写,提供的功能挺多的。

Webview与JS互调

JS调Android方法

webView.getSettings().setJavaScriptEnabled(true); //启用支持javascript,开启之后可以跟JS互调方法,互传参数等。

webView.addJavascriptInterface(javaScriptInterface, "kdb");//第一个参数就是我们一般会实现一个自己的类,类里面提供我们要提供给javascript访问的方法。第二个参数是访问我们在obj中声明的方法时候所用到的js对象。

class JavaScriptInterface {

    public JavaScriptInterface() {

    }

    @JavascriptInterface //记得要加这个,不然API 17会无响应
    public void CCScan() { //必须和JS的函数名相同
         //android本地执行
    }
    @JavascriptInterface 
    public void getSomeThing(String str) { //js传入参数给android           //android本地执行        
    }
}

Android调用JS方法

String content="testStr";

webView.loadUrl("javascript:CCScanResult()");//无参调用

webView.loadUrl("javascript:CCScanResult('" + content + "')");//android调用JS的方法,并且传入参数给JS。CCScanResult是JS函数名字,content是要传入的字符串

webView.loadUrl("javascript:CCScanResult('" + content + "','" + name + "')"); //双参数调用

这方面深入了解推荐看看这位大神写的博客,很多调用失败遇到的问题都有提及 android软件开发之webView.addJavascriptInterface循环渐进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值