android.view.InflateException膨胀类android.webkit.WebView时出错


130

每次在Lollipop(API 22)中,在我的应用程序中,我都会显示一个Web视图,导致应用程序崩溃。我的Android开发人员控制台中与此事件相关的多次崩溃。

无需说它可以在Android 4、6和7上运行。

阅读堆栈跟踪(发布在这篇文章的末尾),有些困扰我

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

我搜索生成的R.java时没有任何运气,显然是因为ID不存在,但是值得尝试。

搜寻该问题似乎与棒棒糖如何处理Webview有关。我基于在GDC崩溃报告器中找到的设备,用棒棒糖开始了新的AVD,并且可以重现该问题。


完整堆栈跟踪:

android.view.InflateException: Binary XML file line #7: Error inflating class android.webkit.WebView
                  at android.view.LayoutInflater.createView(LayoutInflater.java:633)
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                  at it.artecoop.ibreviary.WebViewFragment.onCreateView(WebViewFragment.java:67)
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:135)
                  at android.app.ActivityThread.main(ActivityThread.java:5254)
                  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:903)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
               Caused by: java.lang.reflect.InvocationTargetException
                  at java.lang.reflect.Constructor.newInstance(Native Method)
                  at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                  at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                  at it.artecoop.ibreviary.WebViewFragment.onCreateView(WebViewFragment.java:67) 
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) 
                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) 
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) 
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) 
                  at android.os.Handler.handleCallback(Handler.java:739) 
                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5254) 
                  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:903) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
               Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
                  at android.content.res.Resources.getText(Resources.java:299)
                  at android.content.res.Resources.getString(Resources.java:385)
                  at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
                  at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
                  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:311)
                  at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:96)
                  at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:263)
                  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:260)
                  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 java.lang.reflect.Constructor.newInstance(Native Method) 
                  at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                  at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                  at it.artecoop.ibreviary.WebViewFragment.onCreateView(WebViewFragment.java:67) 
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) 
                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) 
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) 
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) 
                  at android.os.Handler.handleCallback(Handler.java:739) 
                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5254) 
                  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:903) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

这看起来像系统WebView问题。我不知道模拟器是否/何时获得更新。您是否尝试过硬件?
CommonsWare,2013年

@commonsware否,我现在没有配备棒棒糖的设备。但是崩溃报告程序为此显示了多个条目。
Valerio

18
该问题来自2016年,但此问题将在2019年末再次出现。如果您是通过网络搜索来到这里的,请确保选择适合您的答案。
user1032613

我没有API级别21的物理设备。我尝试在具有API级别21的Genymotion和Android模拟器上运行应用程序,但是它崩溃了!这里的任何人都让我知道它是否可以在物理设备上运行!现在我的应用有风险!
Sumit Shukla,

对我而言,Google Play在运行Android 5.0的Huawei P8 Lite上报告了该问题,但在运行Android 6.0.1的真实Samsung Note 4或运行Android 4.4.2的Samsung Note 8平板电脑上却没有发现。
FractalBob

Answers:


168

如果使用androidx.appcompat:appcompat:1.1.0,请尝试androidx.appcompat:appcompat:1.0.2。似乎1.1.0无法解决WebViewAndroid中的错误5.1.1

2020年2月更新:恢复1.0.2为许多人(包括我的应用程序)停止工作,但是使用的最新版本androidx.appcompat:appcompat:1.2.0-alpha02确实修复了崩溃。(我在Google的自动“发布前报告”测试中在运行Android 5.0的Huawei P8 Lite上看到了它)。

2020年6月更新:有比2020年2月更新中提及的更新版本多的更新,您可以在此处查看当前可用的版本:


3
是否存在用于保持1.1.0并修复此问题的错误修复程序?我们依赖于1.0.2中未提供的某些功能,似乎1.1.0的某些alpha或beta版本没有此错误。
PampaZiya

3
是的,清理干净,谢谢!我正在使用beta01,一切似乎都很好。我将继续使用它,因为无论如何使用1.1.0并没有明显的好处。
PampaZiya

11
有一个与此抗议相关的问题:issuetracker.google.com/issues/141132133
Brais Gabin

3
到今天为止,降级仍无法正常工作,就我而言,issuetracker.google.com / issues / 141132133中的此解决方案有效:“也许解决此问题的最简单方法是强制Gradle将版本设置为1.1.0- rc01。将此添加到您的gradle文件中。configuration.all{resolutionStrategy {force'androidx.appcompat:appcompat:1.1.0-rc01'}}“
Talu

3
androidx.appcompat:appcompat:1.2.0-alpha03也可以工作
Artyom

45

警告:此解决方法也可能会破坏某些功能;查看评论以获取详细信息

如果您想从XML布局中扩充 WebView,可以将其包装在一个漂亮的小子类中(基于ikostet的答案):

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) {
        return context.createConfigurationContext(new Configuration());
    }
}

编辑:现在与Kotlin更好

class LollipopFixedWebView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0,
    defStyleRes: Int = 0
) : WebView(context.createConfigurationContext(Configuration()), attrs, defStyleAttr, defStyleRes)

1
我发现了相同的问题,并使用此解决方案进行了修复,谢谢
itsa04g9

在设备上更新Android WebView也可以解决该问题
显示名称

2
在2019年仍然是一个问题,它可以工作,但我不知道为什么/如何,如果对此进行解释会很好。我也收到警告,永远不要在第四个构造函数上使用“ public LollipopFixedWebView(Context context,AttributeSet attrs,int defStyleAttr,int defStyleRes){”
David

4
关于此变通办法,请注意一点:用空白Context实例化WebView可能会导致意外的副作用。例如,WebView中的ActionModes可能不再起作用(即长按以突出显示文本)。
德米特里·布兰特

5
正如@DmitryBrant所说的,在执行此操作时要非常小心,因为这会破坏一些内容,包括下拉字段长按以突出显示文本
user5507535

42

如果您正在使用androidx.appcompat:appcompat:1.1.0并且不想降级androidx.appcompat:appcompat:1.0.2或升级到androidx.appcompat:appcompat:1.2.0-alpha03,则可以在Google Issue Tracker上的此注释中介绍另一种解决方案。

我注意到在调用applyOverrideConfiguration之后,Context.getAssets()Context.getResources().getAssets()没有返回相同的AssetManager对象。从中返回的AssetManager Context.getAssets()无法访问其他程序包(包括系统WebView程序包)中的资源,从而导致WebView崩溃。如果我重写Context.getAssets()返回getResources().getAssets(),问题就消失了。

根据该注释,您可以getAssets()在WebView的Activity中覆盖,以便其返回getResources().getAssets()来解决问题。

爪哇

@Override
public AssetManager getAssets() {
    return getResources().getAssets();
}

科特林

override fun getAssets(): AssetManager {
    return resources.assets
}

3
很棒的答案+1
Shirane85

嗨,如果的确如此,那么如何通过与AssetManager和Webview本身无关的appCompact版本来解决此问题?
Sinapse

查看此更改列表,似乎某些Webview版本applyOverrideConfiguration的AppCompat库中的调用存在问题。
普瓦拉拉

34

我的建议是Configuration仅在“原始版本”引起问题时才使用custom / new ,因此仅在Lollipop上使用。@SpaceBizon代码可以正常工作,直到Android 8.x,9和Q(逐个beta)在每次选择/下拉时都不会显示AlertDialog选择器,而不是发生内存泄漏...下面的固定getFixedContext方法带有“正确的”正确版本代码

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);
    }

    private 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;
    }
}

21

如果您使用的是androidx.appcompat:appcompat:1.1.0,请更改为androidx.appcompat:appcompat:1.0.2,或者如果您想使用DayNight主题,请按如下所示在活动中覆盖applyOverrideConfiguration。(注意:这需要从深色主题切换到浅色主题时重新启动应用程序,反之亦然)。

override fun applyOverrideConfiguration(overrideConfiguration: Configuration?) {
        if (Build.VERSION.SDK_INT in 21..25 && (resources.configuration.uiMode ==  applicationContext.resources.configuration.uiMode)) {
                return
        }
        super.applyOverrideConfiguration(overrideConfiguration)
}

此解决方法有效,但不应该用于21..22而不是21..25吗?API 23+中似乎没有出现此问题。
德米特里·布兰特

5
这是导致此崩溃的修订-android.googlesource.com/platform/frameworks/support/+/…。因此,根据代码,当未安装Google Play商店且Android Webview版本小于50的设备中的API 21..25中将发生崩溃。
AR Mythili Saran

降级到androidx.appcompat:appcompat:1.0.2可以解决问题,谢谢
Talu

3
我在Java中似乎对我有用的变通方法是这样的(对可怕的格式感到抱歉,但这不是一个新的答案,而仅仅是一个端口):@Override public void applyOverrideConfiguration(Configuration overrideConfiguration) { if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT <= 25) { return; } super.applyOverrideConfiguration(overrideConfiguration); }
Mike Hardy

@ARMythiliSaran为什么您说这仅发生在“未安装Google Play商店且Android Webview版本小于50的设备”中?
andrei

20

如果您不依赖DayNight主题切换(或其他UiMode事件),则可以将android:configChanges =“ uiMode”添加到webview活动清单中,以防止AppCompatDelegate更新资源配置,从而使webview膨胀混乱。


这对我有用。我需要ConstraintLayout 1.1.3,它需要appcompat 1.1.0,因此无法进行还原。
马特·罗伯逊

降级到1.0.2对我没有影响,但是这种方法有效。
chrisbtoo

很棒的解决方案!
bojan

17

尝试用于创建Webview:

mWebView = new WebView(getActivity().createConfigurationContext(new Configuration()));

和我的xml文件?
阿卡奥·皮塔

这解决了我的问题,而没有降级任何库版本
Bugs

10

再尝试解决此问题。在您的活动中应重写此方法:

    @Override
    public void applyOverrideConfiguration(final Configuration overrideConfiguration) {
        if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 25) {
            overrideConfiguration.uiMode &= ~Configuration.UI_MODE_NIGHT_MASK;
        }
        super.applyOverrideConfiguration(overrideConfiguration);
    }

5

我能够在模拟器中的API 21上重现崩溃。

因此,我尝试将其添加到实现中,如docs中所述:

dependencies {
    def appcompat_version = "1.1.0"

    implementation "androidx.appcompat:appcompat:$appcompat_version"
    // For loading and tinting drawables on older versions of the platform
    implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
}

添加appcompat-resources没有解决问题。

也许将来会有一个版本,但是我想提一下,似乎有一个应该解决这个问题的互补资源库。因此,当尝试使用的新版本修复此问题时appcompat,请添加appcompat-resources具有相同版本库。

恢复为androidx.appcompat:appcompat:1.0.2确实可以解决此问题,这是一种解决方法。


我无法还原"androidx.appcompat:appcompat-resources:$appcompat_version"到1.0.2版。“错误:无法解决:androidx.appcompat:appcompat-resources:1.0.2”
Murillo Comino

appcompat-resources不适用于1.0.2。看到我更新的答案。
曼努埃尔

非常感谢,它奏效了。我希望在将来的版本中解决此问题。
Murillo Comino

5

下面的代码将解决此问题。请添加到您的Activity

@Override 
public AssetManager getAssets() {
    return getResources().getAssets(); 
}


3

我使用了此来源的最新版本。请根据自己的最佳检查并使用自己的。

如果您想跳过,下面的实现解决了这个问题:

implementation 'androidx.appcompat:appcompat:1.2.0-beta01'

2

戴文锦也很适合我。但是,仅将androidx.appcompat:appcompat:1.1.0降级为1.0.2不会成功。

我从降级了所有以前升级的androidx版本

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha10'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta04'
implementation 'androidx.viewpager2:viewpager2:1.0.0-beta04'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'androidx.preference:preference:1.1.0'
implementation 'androidx.core:core:1.2.0-alpha04'

回到

implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha09'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta03'
implementation 'androidx.viewpager2:viewpager2:1.0.0-beta03'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0-rc01'
implementation 'androidx.preference:preference:1.1.0-rc01'
implementation 'androidx.core:core:1.2.0-alpha03'

提醒您,Google的代码到目前为止还没有错误,并且没有经过良好的测试,并且永远不要轻率地升级版本。


您是否将androidx.appcompat:appcompat降级为1.1.0-rc01?不是1.0.2吗?
Zhebzhik Babich

尝试使用1.0.2,但没有成功。必须是与appcompat结合使用的其他依赖项之一。
S. Gissel

只是降级androidx.appcompat:appcompat对我有用。致将来的读者:在降级更多内容之前,请确保“分级同步”并确认它对您来说不够用。
user1032613


2
/**
 * Customized WebView to avoid crashing on Android 5 and 6 (API level 21 to 23)
 * If the Android System WebView is old and is not updated, the WebView view inflation fails.
 * To reproduce the issue, try on OS 5 or 6 with Android System WebView 72.0.3626.76 (this version is just a reference point from being which we saw no crashes)
 */
class BrilliantWebView : WebView {

   companion object {
       private fun getBrilliantContext(context: Context?) =
            if (!OSUtils.hasNougat()) // OS < 24 or OS < 7.0
                context?.createConfigurationContext(Configuration())
            else
                context
    }

   constructor(context: Context?) : super(getBrilliantContext(context))
   constructor(context: Context?, attrs: AttributeSet?) : super(getBrilliantContext(context), attrs)
   constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(getBrilliantContext(context), attrs, defStyleAttr)
}

@ sumit-shukla发布了有助于我们解决该问题的代码段。但是请确保首先进行stackoverflow.com/a/57715955/2344192
显示名称为

2
请注意,此解决方法会破坏下拉字段并在WebView中选择文本。
user5507535

2

AppCompat 1.2.0-alpha02今天发布,因此您可以使用

implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'

这将解决Lollipop上的WebView问题。


它可以解决该问题,但是由于它是Alpha版本,因此可能会导致其他错误。如果您尝试过,您的应用程序还没有遇到其他问题吗?
Soheil

@Soheil不,我没有遇到任何小故障。当然,Alpha版本总是有点风险。例如,此处提到了alpha02的错误:issuetracker.google.com/issues/141351441#comment48
Dimitris

2

我能够在Nexus 7 API 22上重现此问题。此问题已通过将平板电脑的Android System WebView 版本39(2237560-arm)更新79.0.3945.136而得以解决。

用户无法执行此操作,但是如果您需要帮助某人立即使用您的应用程序,那么这是一个解决方案。


1

问题是通过降级到实现androidx.appcompat:appcompat:1.0.2解决了我的问题


1

就我而言,方法有问题

fun getUserId(): Int = userId

MainActivity。我不知道为什么会这样WebViewgetUserId()既不覆盖Activity该类,也不覆盖其公共方法。如果我重命名或删除此方法,则WebView开始打开。也试图改变

private var userId: Int = 0

var userId: Int = 0
    private set

导致相同的异常。我了解到,当看到一个例外时:Caused by: java.lang.SecurityException: Permission Denial: null asks to run as user 123456 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS。在这种情况下,user = 123456实际上是我的授权用户,该用户在某些请求中使用,而不是在中WebView。我怀疑Android使用userId用作进程的本地user_id。

正如许多其他人所注意到的,我们可以使用appcompat:1.1.01.0.2扩展WebView类。在没有Google Play服务的仿真器21中WebView,长时间触摸文本标签会导致崩溃,但是在典型设备上,一切正常。


0

我没有更改任何依赖项的版本,而是以编程方式实现了webView的生成作为解决方案。

该问题实际上看起来像是从xml文件读取布局开始的。因此,如果编程方式适合您,请检查波纹管样品。

private WebView generateWebView(){
    WebView wv = new WebView(YourContext);
    wv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    wv.setFitsSystemWindows(false); // your preferences
    wv.setVerticalScrollBarEnabled(false); // your preferences
    wv.setPadding(15,15,15,15); // your preferences
    return wv;
}

比只是添加到您的父视图:

LinearLayout scrollContainer = findViewById(R.id.scrollContainer);
scrollContainer.addView(generateWebView());

-4

检查版本。Androidx appcompat和Google材料版本始终保持相同。

implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation "androidx.cardview:cardview:1.0.0"

在此处输入图片说明


1
您应该将示例代码直接粘贴到您的答案中,以防以后链接的图像不可用。
路易斯·沙雷特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.