前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >修复WebView资源未找到导致的崩溃问题

修复WebView资源未找到导致的崩溃问题

作者头像
技术小黑屋
发布于 2020-11-10 06:30:45
发布于 2020-11-10 06:30:45
2.6K00
代码可运行
举报
文章被收录于专栏:技术小黑屋技术小黑屋
运行总次数:0
代码可运行

近期 应用新增了很多的崩溃,分析特征,发现崩溃集中在5.0-5.1.1系统上,崩溃的日志如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003

at android.content.res.Resources.getText(Resources.java:318)

at android.content.res.VivoResources.getText(VivoResources.java:123)

at android.content.res.Resources.getString(Resources.java:404)

at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:694)

at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:618)

at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:631)

at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:780)

at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:619)

at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:556)

at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:312)

at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:96)

at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:264)

at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:123)

at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:110)

at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)

at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:107)

at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:261)

at android.webkit.WebView.<init>(WebView.java:554)

at android.webkit.WebView.<init>(WebView.java:489)

at android.webkit.WebView.<init>(WebView.java:472)

at android.webkit.WebView.<init>(WebView.java:459)

at com.tencent.smtt.sdk.WebView$a.<init>(WebView.java:2968)

at com.tencent.smtt.sdk.WebView.<init>(WebView.java:567)

at com.tencent.smtt.sdk.WebView.<init>(WebView.java:329)

at com.tencent.smtt.sdk.WebView.<init>(WebView.java:323)

at com.tencent.smtt.sdk.WebView.<init>(WebView.java:318)

at com.tencent.smtt.sdk.WebView.<init>(WebView.java:313)

at com.xxxx.webview.X5WebView.<init>(X5WebView.java:36)

at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)

at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)

at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)

at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)

at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)

at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)

at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)

at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)

at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)

at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663)

at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)

at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246)

at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542)

at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)

at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1245)

at android.app.Activity.performStart(Activity.java:6099)

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2367)

at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2466)

at android.app.ActivityThread.access$900(ActivityThread.java:175)

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369)

at android.os.Handler.dispatchMessage(Handler.java:102)

at android.os.Looper.loop(Looper.java:135)

at android.app.ActivityThread.main(ActivityThread.java:5418)

at java.lang.reflect.Method.invoke(Native Method)

at java.lang.reflect.Method.invoke(Method.java:372)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1037)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

貌似感觉没有解决办法,后来在这里https://stackoverflow.com/a/58695635 找到了解决办法

解决方法

  • 针对出问题的系统(5.0-5.1.1)使用ApplicationContext 处理
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object WebViewWorkaroundAssistant {



    fun getWorkaroundContext(context: Context): Context {

        //修复Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003

        //https://stackoverflow.com/a/58695635

        return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {

            context.applicationContext

        } else {

            context

        }

    }

}





  public X5WebView(Context context) {

        super(WebViewWorkaroundAssistant.INSTANCE.getWorkaroundContext(context));

        initUI();

    }

注意事项

  • 当再次使用WebView.getContext时,得到的就是Application 上下文,而不是Activity的了。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Duplicate id 0x7f0900af, tag null, or parent id 0xffffffff with another frag
在一个fragment中使用时 时没有什么问题的,但是当有几个界面当时都用到这个地图功能时,就会出现上面这个问题。
103style
2022/12/19
7440
【错误记录】Android 使用 Navigation 报错 ( Trying to instantiate a class xx.NavHostFragment that is not a Fr )
在 Android 开发中 , 使用 Jetpack 的 Navigation 组件报如下错误 :
韩曙亮
2024/04/20
2470
【错误记录】Android 使用 Navigation 报错 ( Trying to instantiate a class xx.NavHostFragment that is not a Fr )
android fragement报nullexcption错误
这题目起的够骚情了,原创傲慢的上校哦,转载请标明:http://blog.csdn.net/aomandeshangxiao/article/details/7753421 其实有些方法也是从网上找来的,拿来主义,共同分享下(Fragment其他资料:android之Fragment(官网资料翻译))。 第一个错误:FragmentManagerImpl.saveFragmentBasicState 下面是log: E/AndroidRuntime(29923): FATAL EXCEPTION: 
xiangzhihong
2018/01/30
9160
【错误记录】Navigation 导航组件报错 ( Activity xxActivity@3f does not have a NavController set on 2131xx )
在 Android 中 , 使用 Navigation 导航组件 , 运行应用时报错 , 报错信息如下 :
韩曙亮
2023/10/11
7310
【错误记录】Navigation 导航组件报错 ( Activity xxActivity@3f does not have a NavController set on 2131xx )
【Flutter 专题】81 图解 Android Native 集成 FlutterBoost 小尝试 (三)
和尚在一个历史项目中接入了 Flutter Module 并采用 FlutterBoost 作为 Platform Channel 桥接;但实际开发遇到很多问题,仅记录两个印象深刻的小问题;
阿策小和尚
2020/04/08
1.5K0
【Flutter 专题】81 图解 Android Native 集成 FlutterBoost 小尝试 (三)
android学习各种bug(5)
09-26 01:20:33.336: E/AndroidRuntime(1854): FATAL EXCEPTION: main 09-26 01:20:33.336: E/AndroidRuntime(1854): Process: com.example.nongmin, PID: 1854 09-26 01:20:33.336: E/AndroidRuntime(1854): java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.jarvis.mytaobao.user.User_F.initView(User_F.java:77) 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.jarvis.mytaobao.user.User_F.onCreateView(User_F.java:67) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Handler.handleCallback(Handler.java:733) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Handler.dispatchMessage(Handler.java:95) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Looper.loop(Looper.java:136) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.app.ActivityThread.main(ActivityThread.java:5017) 09-26 01:20:33.336: E/AndroidRuntime(1854): at java.lang.reflect.Method.invokeNative(Native Method) 09-26 01:20:33.336: E/AndroidRuntime(1854): at java.lang.reflect.Method.invoke(Method.java:515) 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 09-26 01:20:33.336: E/AndroidRuntime(185
wust小吴
2019/07/08
5410
【错误记录】Android Studio 中 DataBinding 布局报错 ( Resources$NotFoundException: String resource ID #0xd )
特别注意 , 其中的下面的组件 , 直接将 age 字段作为值 , 设置到了 text 中 ,
韩曙亮
2023/03/26
6140
【Android 应用开发】 Fragment 详解
转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191
韩曙亮
2023/03/27
1.7K0
【Android 应用开发】 Fragment 详解
那些年在WebView上踩过的坑
之前我在Android中使用WebView与JS交互全解析一文中,介绍了通过Webview和JS的交互方式,但Webview这个控件简直是让人又爱又恨,各种你想不到的错误在各种奇怪的手机上,各种不一样的版本里,所以我想通过这篇博客总结Webview开发中的不得不注意的一些坑。
老马的编程之旅
2022/06/22
2.3K0
那些年在WebView上踩过的坑
妖怪般的VerifyError | 奇形怪状的bug
如果你是因为这个bug,不幸点入这篇文章,我想说你运气属实不好,那么让我们掌声欢迎这个受害者。
逮虾户
2022/03/06
1.1K0
妖怪般的VerifyError | 奇形怪状的bug
「PhoneInfo」开发记录
开发过程中,一些低频使用的API不太记得,每次都要查一下。比如Build这个类。 做一个app,一边显示代码,一边显示结果,岂不美哉。
AnRFDev
2021/02/01
5450
「PhoneInfo」开发记录
Android Bitmap 内存溢出的问题
09-29 13:35:41.884: E/SQLiteLog(20098): (10) Failed to do file read, got: 0, amt: 100, last Errno: 2 09-29 13:35:46.857: E/dalvikvm-heap(20098): Out of memory on a 31360016-byte allocation. 09-29 13:35:46.862: E/AndroidRuntime(20098): FATAL EXCEPTION: main 09-29 13:35:46.862: E/AndroidRuntime(20098): Process: com.example.nongmin, PID: 20098 09-29 13:35:46.862: E/AndroidRuntime(20098): java.lang.OutOfMemoryError 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:616) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:451) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.content.res.Resources.loadDrawable(Resources.java:2235) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.content.res.Resources.getDrawable(Resources.java:722) 09-29 13:35:46.862: E/AndroidRuntime(20098): at com.jarvis.message.ChatMain.onCreate(ChatMain.java:121) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.Activity.performCreate(Activity.java:5451) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2346) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2443) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.access$800(ActivityThread.java:157) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.os.Handler.dispatchMessage(H
wust小吴
2019/07/05
1.3K0
Android Bitmap 内存溢出的问题
Android 10 WebView 踩坑实录
项目要求支持 8K 高清视频(H265编码)播放,拿到板子后却发现使用 App 可以播放 8K 高清视频,但使用浏览器却不行,即使安装上最新的 Chrome for Android 也不行。根据以往的浏览器内核开发经验,在 Android 平台上,Chromium WebView 最终是调用系统框架层的 MediaPlayer 进行播放。理论上只要系统框架层能够支持 8K 高清播放,那么浏览器应该也支持。实际情况却并非如此,而且 Android 10 预编译 WebView 没任何日志输出,所以需要下载源码编译 Chromium WebView,找出问题所在。
云水木石
2023/10/08
2.1K0
Android 10 WebView 踩坑实录
【错误记录】Android 编译报错 ( Attempt to invoke virtual method ‘void xx.ActionBar.setTitle()‘ on a null obj )
在 Android Studio 中 , 使用右键菜单 , 创建 " Bottom Navigation Activity " ,
韩曙亮
2024/04/20
7760
【错误记录】Android 编译报错 ( Attempt to invoke virtual method ‘void xx.ActionBar.setTitle()‘ on a null obj )
android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord)
09-03 16:55:16.820:E/AndroidRuntime(16873): FATAL EXCEPTION: main
wust小吴
2019/07/05
7430
Android:Webview的使用
Webview相当于一个小型的浏览器,如果在app内实现内置浏览器,效果一定非常酷炫。 我本身有个网站域名,想在APP内直接访问显示,然而不成功。 原因是Webview会自动拦截非https/http的url,于是把网页源代码放到本地,不仅速度快,效果也很不戳。 话不多说,放上代码 xml
zstar
2022/06/14
9760
Android targetSdkVersion设置为30,屏幕分享崩溃解决方案
在使用TRTC SDK,将targetSdkVersion设置为30,进行屏幕分享时会出现如下崩溃,这主要是因为谷歌隐私策略导致的,需要启动一个前台的service,并且android:foregroundServiceType="mediaProjection"才可以解决,具体步骤如下
Sumn
2021/12/08
7.9K2
Android中各种Exception错误小结
The key must be an application-specific resource id:密钥必须是特定于应用程序的资源id。
zinyan.com
2023/02/28
2.1K0
Android中各种Exception错误小结
Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制
App在后台久置后,再次从桌面或最近的任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复的时候遇到了问题,而在使用FragmentActivity+Fragment的时候会更加频繁。比如,如果Fragment没有提供默认构造方法,就会在重建的时候因为反射创建Fragment失败而崩溃,再比如,在onCreate里面new 一个FragmentDialog,并且show,被后台杀死后,再次唤醒的时候,就会show两个对话框,这是为什么?其实这就涉及了后台杀死及恢复的机制,其中涉及的知识点主要是FragmentActivity、ActivityManagerService、LowMemoryKiller机制、ActivityStack、Binder等一系列知识点。放在一篇文章里面可能会有些长,因此,Android后台杀死系列写了三篇:
看书的小蜗牛
2018/06/29
3.3K0
Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制
利用Android Webview漏洞
https://github.com/t4kemyh4nd/vulnwebview
tea9
2023/08/24
7490
利用Android Webview漏洞
推荐阅读
相关推荐
Duplicate id 0x7f0900af, tag null, or parent id 0xffffffff with another frag
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验