1

Recently I got a bug report on my Crashlytic logs for a device with OS 7.1.1. I'm using Webview in my application to show web URL with my customize CSS.

This is the crash stack trace :

Non-fatal Exception: android.view.InflateException: Binary XML file line #106: Binary XML file line #106: Error inflating class android.webkit.WebView

Caused by android.view.InflateException: Binary XML file line #106: Error inflating class android.webkit.WebView

Caused by java.lang.reflect.InvocationTargetException
   at java.lang.reflect.Constructor.newInstance0(Constructor.java)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
   at android.view.LayoutInflater.createView(LayoutInflater.java:645)
   at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
   at feeddetails.FeedDetailsFragment.onCreateView(FeedDetailsFragment.java:95)
   at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
   at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
   at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
   at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
   at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
   at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
   at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984)
   at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626)
   at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)
   at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642)
   at android.view.View.measure(View.java:19834)
   at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
   at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
   at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
   at com.android.internal.policy.DecorView.onMeasure(DecorView.java:692)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2358)
   at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1430)
   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1679)
   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1306)
   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6579)
   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
   at android.view.Choreographer.doCallbacks(Choreographer.java:683)
   at android.view.Choreographer.doFrame(Choreographer.java:619)
   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
   at android.os.Handler.handleCallback(Handler.java:751)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6316)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
 Caused by android.util.AndroidRuntimeException: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
   at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:371)
   at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194)
   at android.webkit.WebView.getFactory(WebView.java:2325)
   at android.webkit.WebView.ensureProviderCreated(WebView.java:2320)
   at android.webkit.WebView.setOverScrollMode(WebView.java:2379)
   at android.view.View.(View.java)
   at android.view.View.(View.java)
   at android.view.ViewGroup.(ViewGroup.java)
   at android.widget.AbsoluteLayout.(AbsoluteLayout.java)
   at android.webkit.WebView.(WebView.java)
   at android.webkit.WebView.(WebView.java)
   at android.webkit.WebView.(WebView.java)
   at android.webkit.WebView.(WebView.java)
   at java.lang.reflect.Constructor.newInstance0(Constructor.java)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
   at android.view.LayoutInflater.createView(LayoutInflater.java:645)
   at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
   at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
   at feeddetails.FeedDetailsFragment.onCreateView(FeedDetailsFragment.java:95)
   at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
   at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
   at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
   at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
   at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
   at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
   at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984)
   at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626)
   at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)
   at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642)
   at android.view.View.measure(View.java:19834)
   at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
   at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
   at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6164)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
   at com.android.internal.policy.DecorView.onMeasure(DecorView.java:692)
   at android.view.View.measure(View.java:19834)
   at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2358)
   at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1430)
   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1679)
   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1306)
   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6579)
   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
   at android.view.Choreographer.doCallbacks(Choreographer.java:683)
   at android.view.Choreographer.doFrame(Choreographer.java:619)
   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
   at android.os.Handler.handleCallback(Handler.java:751)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6316)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

From the stack trace, it is clear that android application is not able to find Webview in the device.

How to handle this and make the user install system Webview if it is not present in the system. This is mainly happening in Android Nougat OS devices.

baldraider
  • 1,049
  • 2
  • 18
  • 48
  • Not sure if this is making the whole process to fail, or is kind of a warning and is falling back to OS internal WebView. Notice it says "Non-fatal Exception". That being said, I would try to reproduce by changing the WebView implementation in the Developer settings of the device (I think it is there since 7.0). – Xavier Rubio Jansana Aug 25 '17 at 09:55
  • Were you able to solve it? – Yash Sep 05 '17 at 06:42
  • @Yashasvi No :( – baldraider Sep 05 '17 at 08:50
  • 1
    Hey, I was able to !. See this : https://stackoverflow.com/questions/46048912/android-failed-to-load-webview-provider-no-webview-installed/46266199#46266199 – Yash Oct 23 '17 at 14:00
  • @XavierRubioJansana what do you mean by changing the webview implementation in the Developer settings? – Rohit Singh Dec 01 '21 at 22:09
  • In the developer options https://developer.android.com/studio/debug/dev-options in Android settings you can change which WebView implementation the system is using. The common one is Chrome based. – Xavier Rubio Jansana Dec 02 '21 at 22:56

0 Answers0