Android WebView里js与android交互

总体归纳为下图:

当前开源项目如:https://github.com/lzyzsd/JsBridge 都是使用的上面方式


详细:

https://blog.csdn.net/carson_ho/article/details/64904691


webview 参数设置(兼容htmll5特性):

WebSettings webSettings = webView.getSettings();


// 支持javascript
webSettings.setJavaScriptEnabled(true);


// 支持使用localStorage(H5页面的支持)
webSettings.setDomStorageEnabled(true);


// 支持数据库
webSettings.setDatabaseEnabled(true);


// 支持缓存
webSettings.setAppCacheEnabled(true);
String appCaceDir = this.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath();
webSettings.setAppCachePath(appCaceDir);


// 设置可以支持缩放
webSettings.setUseWideViewPort(true);


// 扩大比例的缩放
webSettings.setSupportZoom(true);


webSettings.setBuiltInZoomControls(true);


// 隐藏缩放按钮
webSettings.setDisplayZoomControls(false);


// 自适应屏幕
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setLoadWithOverviewMode(true);


// 隐藏滚动条
webView.setHorizontalScrollBarEnabled(false);
webView.setVerticalScrollBarEnabled(false);


// 进度显示及隐藏
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        if (newProgress >= 99) {
            pv.setVisibility(View.INVISIBLE);
        } else {
            pv.setVisibility(View.VISIBLE);
        }
    }
});


// 处理网页内的连接(自身打开)
webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }


    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return true;
    }
});


webView.loadUrl(Cons.Url.ROOT);


// 使用返回键的方式防止网页重定向
webView.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
                webView.goBack();
                return true;
            }
        }
        return false;
    }
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值