Android WebView 5.x 系统下 Error inflating class android.webkit.WebView

问题描述

项目在部分Android 5.x系统手机上面使用webView会导致崩溃,其他的android版本未发现此类问题。
报错信息如下:

android.view.InflateException: Binary XML file line #24: Error inflating class android.webkit.WebView

解决方式

1. 解决办法一(推荐)

如果项目中使用"androidx.appcompat:appcompat:1.1.0" ,1.1.0版本webview在Android5.x上有问题,替换为最新的版本或者是比较旧的版本。

替换较新版本例如:'androidx.appcompat:appcompat:1.2.0'

替换为较旧版本例如:androidx.appcompat:appcompat:1.0.2

解决办法二

在Android5.x上通过解决自定义WebView
经过下面自定义view处理,解决了在vivo5.1.1手机上面的问题。

 

public class LollipopFixedWebView extends WebView {
    public LollipopFixedWebView(Context context) {
        super(getFixedContext(context));
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs) {
        super(getFixedContext(context), attrs);
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(getFixedContext(context), attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(getFixedContext(context), attrs, defStyleAttr, defStyleRes);
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing) {
        super(getFixedContext(context), attrs, defStyleAttr, privateBrowsing);
    }

    public static Context getFixedContext(Context context) {
        if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 23) // Android Lollipop 5.0 & 5.1
            return context.createConfigurationContext(new Configuration());
        return context;
    }
}

主要核心方法是getFixedContext(context),根据版本号配置不同的context。

文档
stackoverflow问题讨论

你可能感兴趣的:(Android WebView 5.x 系统下 Error inflating class android.webkit.WebView)