首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android O在AFW注册后无法扩大webview

Android O在AFW注册后无法扩大webview
EN

Stack Overflow用户
提问于 2017-07-31 22:52:39
回答 2查看 1.5K关注 0票数 4

我在Pixel XL设备上使用最新的Android O beta版本。这是我的xml网页视图。

代码语言:javascript
复制
<WebView
    android:id="@+id/launch_anim"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:layout_centerHorizontal="true" />

这就是它在我的Activity类中的用法

代码语言:javascript
复制
WebView launch_anim = (WebView)findViewById(R.id.launch_anim);
launch_anim.loadUrl("file:///android_asset/launch_anim_centered.html");

这是我在assets目录中的launch_anim_centered.html文件

代码语言:javascript
复制
<HTML>
<head>
    <style>
body {
    background-color: #FFFFFF;
}
</style>
</head>
<body>
<CENTER>
    <IMG SRC="launch_anim_1x.gif">
</CENTER>
</body>
</HTML>

launch_anim_1x.gif文件是包含旋转图像的gif文件。当我启动应用程序时,运行此活动没有任何问题。然后我做Android-For-Work的注册。注册后,一旦应用程序启动,此活动将无法呈现,并抛出如下异常

代码语言:javascript
复制
07-28 15:39:55.352 16538-16538/? I/WebViewFactory: Loading com.google.android.webview version 58.0.3029.125 (code 303012500)
07-28 15:39:55.353 16538-16538/? D/AndroidRuntime: Shutting down VM
07-28 15:39:55.354 16538-16538/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.sample.app, PID: 16538
                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sample.app/com.sample.app.ui.StartupActivity}: android.view.InflateException: Binary XML file line #25: Binary XML file line #25: Error inflating class android.webkit.WebView
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                       at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
                                                       at android.os.Handler.dispatchMessage(Handler.java:105)
                                                       at android.os.Looper.loop(Looper.java:164)
                                                       at android.app.ActivityThread.main(ActivityThread.java:6541)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                                                    Caused by: android.view.InflateException: Binary XML file line #25: Binary XML file line #25: Error inflating class android.webkit.WebView
                                                    Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class android.webkit.WebView
                                                    Caused by: java.lang.reflect.InvocationTargetException
                                                       at java.lang.reflect.Constructor.newInstance0(Native Method)
                                                       at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
                                                       at android.view.LayoutInflater.createView(LayoutInflater.java:647)
                                                       at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
                                                       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
                                                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                       at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:418)
                                                       at android.app.Activity.setContentView(Activity.java:2654)
                                                       at com.sample.app.ui.StartupActivity.onCreate(Unknown Source:37)
                                                       at android.app.Activity.performCreate(Activity.java:6975)
                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                       at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
                                                       at android.os.Handler.dispatchMessage(Handler.java:105)
                                                       at android.os.Looper.loop(Looper.java:164)
                                                       at android.app.ActivityThread.main(ActivityThread.java:6541)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                                                    Caused by: java.lang.NullPointerException
                                                       at android.content.res.AssetManager.addAssetPathNative(Native Method)
                                                       at android.content.res.AssetManager.addAssetPathInternal(AssetManager.java:689)
                                                       at android.content.res.AssetManager.addAssetPathAsSharedLibrary(AssetManager.java:684)
                                                       at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:407)
                                                       at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:211)
                                                       at android.webkit.WebView.getFactory(WebView.java:2467)
                                                       at android.webkit.WebView.ensureProviderCreated(WebView.java:2462)
                                                       at android.webkit.WebView.setOverScrollMode(WebView.java:2527)
                                                       at android.view.View.<init>(View.java:4536)
                                                       at android.view.View.<init>(View.java:4668)
                                                       at android.view.ViewGroup.<init>(ViewGroup.java:597)
                                                       at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:55)
07-28 15:39:55.354 16538-16538/? E/AndroidRuntime:     at android.webkit.WebView.<init>(WebView.java:636)
                                                       at android.webkit.WebView.<init>(WebView.java:581)
                                                       at android.webkit.WebView.<init>(WebView.java:564)
                                                       at android.webkit.WebView.<init>(WebView.java:551)
                                                        ... 27 more

此问题仅在像素和PixelXL设备中出现。Nexus设备工作正常。对于解决此问题的任何帮助,我们都将不胜感激。感谢编辑:新信息。因此,我禁用了webview以查看发生了什么,但随后应用程序在尝试访问CookieManager.getInstance()时崩溃。这是堆栈跟踪:

代码语言:javascript
复制
07-31 09:21:51.767 11267-11557/com.airwatch.vmworkspace I/WebViewFactory: Loading com.google.android.webview version 58.0.3029.125 (code 303012500)
07-31 09:21:51.775 13243-13276/? I/ConfigUpdater: Update started

                                                  --------- beginning of crash
07-31 09:21:51.775 11267-11557/com.airwatch.vmworkspace E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
                                                                          Process: com.airwatch.vmworkspace, PID: 11267
                                                                          java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                              at android.os.AsyncTask$3.done(AsyncTask.java:353)
                                                                              at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
                                                                              at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
                                                                              at java.util.concurrent.FutureTask.run(FutureTask.java:271)
                                                                              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
                                                                              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
                                                                              at java.lang.Thread.run(Thread.java:764)
                                                                           Caused by: java.lang.NullPointerException
                                                                              at android.content.res.AssetManager.addAssetPathNative(Native Method)
                                                                              at android.content.res.AssetManager.addAssetPathInternal(AssetManager.java:689)
                                                                              at android.content.res.AssetManager.addAssetPathAsSharedLibrary(AssetManager.java:684)
                                                                              at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:407)
                                                                              at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:211)
                                                                              at android.webkit.CookieManager.getInstance(CookieManager.java:39)
                                                                              at com.sample.app.network.communication.MyCookieManager.<init>(MyCookieManager.java:48)

我认为真正的问题是android.content.res.AssetManager.addAssetPathNative(Native方法上的NullPointerException )。你知道怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-11 18:10:20

这是安卓O中的一个bug :如果在其中一个配置文件中禁用了Chrome,那么两个配置文件的WebView都会被破坏,直到它被Play更新。

为了在配置期间修复此问题并避免更新WebView,您可以在工作配置文件中使用包名称为com.android.chromeDevicePolicyManager.enableSystemApp()启用Chrome,然后阻止用户使用DevicePolicyManager.setUninstallBlocked()禁用它。

如果你想阻止用户使用Chrome浏览器,你应该使用DevicePolicyManager.setPackagesSuspended()而不是DevicePolicyManager.setApplicationHidden()

票数 4
EN

Stack Overflow用户

发布于 2017-08-03 01:39:01

我找到了一个可能对其他人有帮助的变通方法。在我们开始AFW注册之前,device中的开发者选项显示Webview实现为Chrome。Android系统Webview已关闭。此时,如果我去playstore,我可以看到Android系统Webview,但当我点击'Enable‘时没有任何反应。在我们执行AFW之后,我们看到托管配置文件已经成功创建,如果我现在转到playstore,我会看到Android系统Webview的“更新”按钮,我就可以进行更新了。一旦完成,如果我查看开发人员选项,webview实现已经从chrome切换到系统webview。在此之后,如果我在工作容器中启动我的应用程序,我看不到崩溃,应用程序按预期工作。此外,一旦我们删除了工作配置文件,webview实现就会切换回chrome。注意,同样的事情也发生在Nexus设备上,但我们不需要对webview进行任何更新。webview实现在chrome和系统webview之间来回切换,一切正常。只有在Pixel中,我们才会进行更新以使其工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45419123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档