Android WebView在Bitmap.getWidth()处触发NullPointerException求助
安卓WebView在三星S21(Android 13)上的空指针崩溃问题
加载应用内功能对应的WebView时触发崩溃,仅发生在Android 13系统的三星S21设备上,同版本系统的Google Pixel设备无异常。已尝试更新WebView,问题未解决。
崩溃日志:
FATAL EXCEPTION: main Process: com.app.au, PID: 15769 java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference at Ar.run(chromium-TrichromeWebViewGoogle6432.aab-stable-573519633:50) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:335) at android.os.Looper.loopOnce(Looper.java:186) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8757) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
解决建议
- 排查页面图片资源兼容性:检查WebView加载的页面中是否有加载失败的图片(比如WebP或特殊编码的PNG),这类资源在三星设备上可能无法正常解析导致Bitmap为null,建议替换为兼容性更好的格式。
- 禁用WebView硬件加速:在对应Activity的AndroidManifest.xml中添加
android:hardwareAccelerated="false",或在代码中设置webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null),部分三星设备的硬件加速与WebView图片渲染存在冲突。 - 拦截图片加载并兜底:通过
WebViewClient的shouldInterceptRequest方法手动处理图片加载,若加载失败则返回预设的占位图Bitmap,避免null值传入后续逻辑。 - 排查WebView初始化配置:检查是否开启了三星设备不兼容的WebSettings选项(如
setAllowFileAccess、setDomStorageEnabled等),逐步禁用这些选项定位问题。 - 三星设备特殊适配:通过
Build.MANUFACTURER判断设备品牌,针对三星设备单独调整WebView配置,比如修改默认User-Agent或调整缓存策略。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

