总体归纳为下图:

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;
    }
});

相关文章:

  • 2021-12-14
  • 2021-11-30
  • 2021-08-02
  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2021-04-18
  • 2022-12-23
猜你喜欢
  • 2021-11-22
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-18
相关资源
相似解决方案