WebView基本使用

WebView基本使用

    //初始化
     webview= (WebView) findViewById(R.id.webView);
     //或者代码生成
     WebView webview =new WebView(this);
     //垂直不显示滚动条
    webview.setVerticalScrollBarEnabled(false); 

    //声明WebSettings子类
    WebSettings webSettings = webview.getSettings();
    //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
    webSettings.setJavaScriptEnabled(true);

    //设置自适应屏幕,两者合用
    webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
    webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
    //缩放操作
    webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
    webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
    webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
    //其他细节操作  缓存设置
    webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
    webSettings.setAllowFileAccess(true); //设置可以访问文件
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
    webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
    //允许http和https混合
     webSettings.setPluginState(WebSettings.PluginState.ON);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        setting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
    }   
     webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式

    //设置显示方式
    webview.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //在本窗口显示网页,隐藏地址栏
            view.loadUrl(url);
            //以网页形式显示
         //  Uri uri = Uri.parse(url);
         //  Intent intent = new Intent(Intent.ACTION_VIEW, uri);
         //  startActivity(intent);

            return false;
        }
    });

    //弹窗形式的js交互
    webview.setWebChromeClient(new WebChromeClient(){
        @Override
        public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
                //message指js返回的数据
                // 表示成功调用了方法
                result.confirm("js调用了Android的方法成功啦");
                //返回true表示不弹窗
                return true;
        }
    });
}

//点击返回返回上一层的网页,无上一层就关闭窗体
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
        webview.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

//避免内存溢出,关闭窗体时也要销毁webview
@Override
protected void onDestroy() {
    if (webview != null) {
        webview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
        webview.clearHistory();
        ((ViewGroup) webview.getParent()).removeView(webview);
        webview.destroy();
        webview = null;
    }
    super.onDestroy();
}

Js代码如下
这里写图片描述

这种交互方式比较麻烦,一搬很少用,而是采用addJavascriptInterface方式交互的。

创建js调用的Android方法

public class AndroidtoJs  extends Object  {

    private Context context;

    public AndroidtoJs(Context context) {
        super();
        this.context = context;
    }

    @JavascriptInterface
    public String onGetPhone(){
        Log.i("onGetPhone:","js调用Android方法");
        return "00000";
    }
}

提供js调用的接口

  AndroidtoJs androidtoJs = new AndroidtoJs(this);
  webView.addJavascriptInterface(androidtoJs, "android");

js调用方法

android.onGetPhone();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值