安卓webview设置h5页面中window.open打开的高度

1 篇文章 0 订阅

安卓webview设置h5页面中window.open打开的高度

正常安卓和h5交互的时候,都是打开一个单纯的h5页面,如果该h5页面中,涉及到window.open打开其他链接的时候,有可能就导致不能正常打开了。

安卓代码

创建webview

代码如下:

webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
        webview.getSettings().setSupportMultipleWindows(true);
        webview.getSettings().setJavaScriptEnabled(true);//是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞
        webview.getSettings().setSupportZoom(false);//是否可以缩放,默认true
        webview.getSettings().setBuiltInZoomControls(false);//是否显示缩放按钮,默认false
        webview.getSettings().setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
        webview.getSettings().setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
// webview.getSettings().setUserAgentString("User-Agent:Android");//设置用户代理,一般不用
        webview.addJavascriptInterface(new DataInteraction(this),
                "JSBridge");
        webview.setWebChromeClient(new MyWebChromeClient(getWindow(), WebViewActivity.this));
        webview.setWebViewClient(myWebViewClient);

关键点:
1、新增MyWebChromeClient的实现
2、setJavaScriptCanOpenWindowsAutomatically

创建MyWebChromeClient

此MyWebChromeClient继承WebChromeClient
实现onCreateWindow方法

@Override
    public boolean onCreateWindow(WebView view, boolean dialog,
                                  boolean userGesture, Message resultMsg) {
        newWebView = new WebView(view.getContext());
        view.addView(newWebView);
        WebSettings settings = newWebView.getSettings();
        settings.setDefaultFontSize(12);
        settings.setJavaScriptEnabled(true);
        //newWebView.setInitialScale(view.getHeight()/3);

        //这个setWebViewClient要加上,否则window.open弹出浏览器打开。
        newWebView.setWebViewClient(new WebViewClient());
        newWebView.setWebChromeClient(this);

ViewGroup.LayoutParams params= newWebView.getLayoutParams();
    Display display = window.getWindowManager().getDefaultDisplay();
    params.height=display.getHeight();
    newWebView.setLayoutParams(params);

        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(newWebView);
        resultMsg.sendToTarget();
        return true;
    }

一定要加这个
newWebView.setWebViewClient(new WebViewClient());

设置window.open的高度

获取当前view的高度,然后给新的窗口设置高度

ViewGroup.LayoutParams params= newWebView.getLayoutParams();
        Display display = window.getWindowManager().getDefaultDisplay();
        params.height=display.getHeight();
        newWebView.setLayoutParams(params);

未设置高度前

看红色框展示的部分,即用window.open方式打开的页面
在这里插入图片描述

设置高度后

设置完以后就应该是全屏的这样子了
由于没有专门截取,就找了个视频的截图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值