Android Failed to load web provider: no webview installed

Recently, we started to see this new entry in our crashlytics, which says that Android cannot find the webview package on the device.

Here's the full stacktrace (the classes from our source code have been replaced by .... :

  Fatal Exception: android.view.InflateException: Binary XML file line #139: Binary XML file line #139: Error inflating class <unknown> Caused by android.view.InflateException: Binary XML file line #139: Error inflating class <unknown> 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 gaaada(SourceFile:211) at gaaada(SourceFile:20) at gaaad$a.onCreateView(SourceFile:302) at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777) 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 gaaadinflate(SourceFile:60) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at ......(SourceFile:148) at ......(SourceFile:119) at ......(SourceFile:28) at android.support.v4.view.ViewPager.a(SourceFile:1034) at android.support.v4.view.ViewPager.a(SourceFile:1182) at android.support.v4.view.ViewPager.c(SourceFile:1116) at android.support.v4.view.ViewPager.onMeasure(SourceFile:1642) at ....(SourceFile:27) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1320) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.widget.ScrollView.onMeasure(ScrollView.java:345) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.support.v4.view.ViewPager.onMeasure(SourceFile:1658) at android.view.View.measure(View.java:20234) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:825) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:511) at android.view.View.measure(View.java:20234) at android.support.v4.widget.DrawerLayout.onMeasure(SourceFile:1081) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.support.v7.widget.ContentFrameLayout.onMeasure(SourceFile:139) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:716) at android.view.View.measure(View.java:20234) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2659) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1600) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1873) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1485) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7078) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:910) at android.view.Choreographer.doCallbacks(Choreographer.java:712) at android.view.Choreographer.doFrame(Choreographer.java:646) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:896) at android.os.Handler.handleCallback(Handler.java:836) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6369) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1088) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:949) Caused by android.util.AndroidRuntimeException: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:395) at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194) at android.webkit.WebView.getFactory(WebView.java:2592) at android.webkit.WebView.findAddress(WebView.java:1958) at android.text.util.Linkify.gatherMapLinks(Linkify.java:599) at android.text.util.Linkify.addLinks(Linkify.java:287) at android.widget.TextView.setText(TextView.java:4474) at android.widget.TextView.setText(TextView.java:4395) at android.widget.TextView.<init>(TextView.java:1472) at android.widget.TextView.<init>(TextView.java:727) at android.widget.TextView.<init>(TextView.java:723) at me.grantland.widget.AutofitTextView.<init>(SourceFile:25) 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 gaaada(SourceFile:211) at gaaada(SourceFile:20) at gaaad$a.onCreateView(SourceFile:302) at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777) 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 gaaadinflate(SourceFile:60) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at ....(SourceFile:148) at ....(SourceFile:119) at ....(SourceFile:28) at android.support.v4.view.ViewPager.a(SourceFile:1034) at android.support.v4.view.ViewPager.a(SourceFile:1182) at android.support.v4.view.ViewPager.c(SourceFile:1116) at android.support.v4.view.ViewPager.onMeasure(SourceFile:1642) at ....(SourceFile:27) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1320) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.widget.ScrollView.onMeasure(ScrollView.java:345) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.support.v4.view.ViewPager.onMeasure(SourceFile:1658) at android.view.View.measure(View.java:20234) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:825) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:511) at android.view.View.measure(View.java:20234) at android.support.v4.widget.DrawerLayout.onMeasure(SourceFile:1081) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.support.v7.widget.ContentFrameLayout.onMeasure(SourceFile:139) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:716) at android.view.View.measure(View.java:20234) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2659) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1600) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1873) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1485) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7078) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:910) at android.view.Choreographer.doCallbacks(Choreographer.java:712) at android.view.Choreographer.doFrame(Choreographer.java:646) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:896) at android.os.Handler.handleCallback(Handler.java:836) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6369) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1088) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:949) Caused by android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed at android.webkit.WebViewFactory.getWebViewContextAndSetProvider(WebViewFactory.java:294) at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:354) at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194) at android.webkit.WebView.getFactory(WebView.java:2592) at android.webkit.WebView.findAddress(WebView.java:1958) at android.text.util.Linkify.gatherMapLinks(Linkify.java:599) at android.text.util.Linkify.addLinks(Linkify.java:287) at android.widget.TextView.setText(TextView.java:4474) at android.widget.TextView.setText(TextView.java:4395) at android.widget.TextView.<init>(TextView.java:1472) at android.widget.TextView.<init>(TextView.java:727) at android.widget.TextView.<init>(TextView.java:723) at me.grantland.widget.AutofitTextView.<init>(SourceFile:25) 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 gaaada(SourceFile:211) at gaaada(SourceFile:20) at gaaad$a.onCreateView(SourceFile:302) at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777) 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 gaaadinflate(SourceFile:60) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at ....(SourceFile:148) at ....(SourceFile:119) at ....(SourceFile:28) at android.support.v4.view.ViewPager.a(SourceFile:1034) at android.support.v4.view.ViewPager.a(SourceFile:1182) at android.support.v4.view.ViewPager.c(SourceFile:1116) at android.support.v4.view.ViewPager.onMeasure(SourceFile:1642) at ....(SourceFile:27) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1320) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.widget.ScrollView.onMeasure(ScrollView.java:345) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.support.v4.view.ViewPager.onMeasure(SourceFile:1658) at android.view.View.measure(View.java:20234) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:825) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:511) at android.view.View.measure(View.java:20234) at android.support.v4.widget.DrawerLayout.onMeasure(SourceFile:1081) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.support.v7.widget.ContentFrameLayout.onMeasure(SourceFile:139) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705) at android.widget.LinearLayout.measureVertical(LinearLayout.java:797) at android.widget.LinearLayout.onMeasure(LinearLayout.java:657) at android.view.View.measure(View.java:20234) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249) at android.widget.FrameLayout.onMeasure(FrameLayout.java:214) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:716) at android.view.View.measure(View.java:20234) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2659) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1600) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1873) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1485) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7078) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:910) at android.view.Choreographer.doCallbacks(Choreographer.java:712) at android.view.Choreographer.doFrame(Choreographer.java:646) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:896) at android.os.Handler.handleCallback(Handler.java:836) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6369) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1088) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:949) 

We see this on:

Android version: 5.6.7

Instruments Manufacturers: Lenovo, oneplus, samsung, motorola

And the devices are not implemented.

After searching for a while, I cannot find a suitable reason (and treatment) for this. Passed through this question, but he has no solution.

Please, help.

Edit: this happens for many of our users, so I can’t go and tell everyone to check / install the webiew from the playback store. Is there a better solution for this?

+10
source share
3 answers

I found out the probable problem here. Since we know that webview is shipped separately from Android 5.0, it may happen that at the time when my view is bloated, the webview package is updated by the os operating system and therefore it cannot find the webview package. in these few minutes . I know this is a very borderline case, but

  • as I see it, failure only occurs on devices with> = 5.0 that support this hypothesis
  • it’s very difficult to believe that all such devices do not have a web view installed. In fact, I tried to remove the system and chrome packages from my device, but the application still did not freeze.

So here is what I did (hacky solution, but prevents crashes):

 try { // the inflating code that causing the crash } catch (Exception e) { if (e.getMessage() != null && e.getMessage().contains("webview")) { // If the system failed to inflate this view because of the WebView (which could // be one of several types of exceptions), it likely means that the system WebView // is either not present (unlikely) OR in the process of being updated (also unlikely). // It unlikely but we have been receiving a lot of crashes. // In this case, show the user a message and finish the activity } } 

Basically nothing but handling this exception. There is no rocket science.

+13
source

Please refer to this issue.

Temporary solution

 try { super.setText(spannableStringBuilder, type); } catch (Exception e) { // WebView is not installed in some devices by default, Linkify.MAP_ADDRESSES causes the exception if (e.getMessage().contains("webview")){ setAutoLinkMask(Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS); } super.setText(spannableStringBuilder, type); } 
+1
source

My exception

 android.webkit.WebViewFactory$MissingWebViewPackageException Failed to load WebView provider: No WebView installed 

Stack of parts:

 java.lang.RuntimeException:Unable to start activity ComponentInfo{cn.trinea.android.developertools/aaaa}: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class aaab android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) ...... android.webkit.WebViewFactory$MissingWebViewPackageException:Failed to load WebView provider: No WebView installed android.webkit.WebViewFactory.getWebViewContextAndSetProvider(WebViewFactory.java:270) android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:330) android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194) android.webkit.WebView.getFactory(WebView.java:2325) android.webkit.WebView.ensureProviderCreated(WebView.java:2320) android.webkit.WebView.setOverScrollMode(WebView.java:2379) android.view.View.<init>(View.java:4023) android.view.View.<init>(View.java:4146) android.view.ViewGroup.<init>(ViewGroup.java:579) android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:55) android.webkit.WebView.<init>(WebView.java:627) android.webkit.WebView.<init>(WebView.java:572) android.webkit.WebView.<init>(WebView.java:555) android.webkit.WebView.<init>(WebView.java:542) 

decision

 public class MyWebView extends WebView { @Override public void setOverScrollMode(int mode) { try { super.setOverScrollMode(mode); } catch (Exception e) { if (e.getMessage() != null && e.getMessage().contains("Failed to load WebView provider: No WebView installed")) { e.printStackTrace(); } else { throw e; } } } } 
0
source

Source: https://habr.com/ru/post/1271519/


All Articles