Android webView 常用属性用法简介

使用环境:

             使用到webView

使用方法:

1 设置cookie

    private String mS_url, cookieKey, cookieValue;
    
    //webview加载的url
    mS_url = activityIntent.getExtras().getString(Constant.BundleORIntentKey.KEY_URL);

    //webView的cookie的key
    cookieKey = activityIntent.getExtras().getString("module_cookie_key");

    //webView的cookie的Value
    cookieValue = activityIntent.getExtras().getString("module_cookie_value");
 
    //基础属性之设置cookie     需要在webView.loadUrl()之前调用
    public void setCookie() {
        try {
            LogUtil.e("设置cookie");
            String StringCookie = cookieKey + "=" + cookieValue + ";path=/";
            CookieManager cookieManager = CookieManager.getInstance();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                cookieManager.removeSessionCookies(null);
                cookieManager.flush();
            } else {
                cookieManager.removeSessionCookie();
                CookieSyncManager.getInstance().sync();
            }
            cookieManager.setAcceptCookie(true);
            cookieManager.setCookie(mS_url, StringCookie);
        } catch (Exception e) {
            LogUtil.e("cookie设置出错-->" + e.getMessage());
        }
    }


    

2 常用属性:

             binding.infoAWebContent.getSettings().setSupportZoom(true);//缩放
             binding.infoAWebContent.getSettings().setBuiltInZoomControls(true);
             binding.infoAWebContent.getSettings().setDisplayZoomControls(false);
                
              
             binding.infoAWebContent.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
             binding.infoAWebContent.getSettings().setAllowFileAccess(true);
             binding.infoAWebContent.getSettings().setGeolocationEnabled(true);
             binding.infoAWebContent.getSettings().setDomStorageEnabled(true);


             //注意userAgent中不允许有换行符
             //String oldUserAgent = 
             binding.infoAWebContent.getSettings().getUserAgentString();
             //binding.infoAWebContent.getSettings().setUserAgentString(oldUserAgent + 
             ";ShiQin@App-Android");
             binding.infoAWebContent.getSettings().setUserAgentString("app/ShiQin@App-Android");
             setCookie();


             binding.infoAWebContent.loadUrl(mS_url);
             binding.infoAWebContent.getSettings().setJavaScriptEnabled(true);
                
      binding.infoAWebContent.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
             binding.infoAWebContent.getSettings().setLoadWithOverviewMode(true);
             binding.infoAWebContent.getSettings().setDefaultTextEncodingName("UTF-8");
             binding.infoAWebContent.getSettings().setAppCacheEnabled(false);

3 返回值处理:

  /**
     * 处理手机返回键返回上一页的卡顿问题
     *
     * @param keyCode
     * @param event
     * @return
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            if (binding.infoAWebContent.canGoBack()) {
                //goBack()表示返回WebView的上一页面
                binding.infoAWebContent.goBack();
                return true;
            } else {
                finish();
                return true;
            }
        }
        return false;
    }

4 掉起支付宝支付

   在webView.loadUrl(str)前调用

  binding.infoAWebContent.setWebViewClient(new WebViewClient() {
            @SuppressLint("NewApi")
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

                LogUtil.e("支付地址-->" + request.getUrl());
                LogUtil.e("版本号SDK_INT-->" + Build.VERSION.SDK_INT);
                LogUtil.e("版本号M-->" + Build.VERSION_CODES.M);

                if (request.getUrl().toString().startsWith("alipays")) {
                    startPayActivity(request.getUrl());
                } else if (request.getUrl().toString().startsWith("wxpays")) {
                    startPayActivity(request.getUrl());
                } else {
                    binding.infoAWebContent.loadUrl(request.getUrl().toString());
                }
                return false;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                //获取url的标题
                String title = view.getTitle();
                //                if (!TextUtils.isEmpty(title)) {
                //                    mTitle = title;
                //                    viewModel.setTitle(title);
                //                }
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }
        });



 public void startPayActivity(Uri url) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(url);
        startActivity(intent);
    }

代码在调试时注入大量的log日志,亲在使用时忽略掉即可。

或者与我一样有好奇心,打印出来亲眼看看好放心。

 

更多讨论,欢迎来讨论: 88627109

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值