2017-07-31 6 views
2

私は最新のAndroid Oベータ版をPixel XLデバイスで使用しています。 これはxmlでの私のwebviewです。AFWの登録後にAndroid OがWebviewを膨張させない

<WebView 
    android:id="@+id/launch_anim" 
    android:layout_width="match_parent" 
    android:layout_height="150dp" 
    android:layout_centerHorizontal="true" /> 

これはそのlaunch_anim_1x.gifファイルを含むgifファイルである。これは、DIR

<HTML> 
<head> 
    <style> 
body { 
    background-color: #FFFFFF; 
} 
</style> 
</head> 
<body> 
<CENTER> 
    <IMG SRC="launch_anim_1x.gif"> 
</CENTER> 
</body> 
</HTML> 

資産の私launch_anim_centered.htmlファイルです

WebView launch_anim = (WebView)findViewById(R.id.launch_anim); 
launch_anim.loadUrl("file:///android_asset/launch_anim_centered.html"); 

私のActivityクラスで使用される方法です回転している画像。 アプリケーションを起動すると、このアクティビティの実行に問題はありません。次にAndroid-For-Workの登録を行います。ポスト登録は、とすぐにアプリが起動されるよう、この活動はレンダリングに失敗し、それがこの問題は、画素のみとPixelXLデバイスに見られるこの

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 

のような例外がスローされます。 Nexus端末は正常に動作します。この問題を解決するための助けに感謝します。ありがとう 編集:新しい情報。だから私は何が起こるかを見るためにWebビューを無効にしたが、CookieManager.getInstance()にアクセスしようとするとアプリケーションがクラッシュする。これは、スタックトレースです:

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(ネイティブメソッド)でNullPointerExceptionがあると思います。どのようにこれを修正するための任意のアイデア?

+0

[DevicePolicyManager.enableSystemApp](https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html)を使用して仕事用プロフィールでChromeを有効にするか、Playストアからインストールしましたか? – Fred

答えて

4

これはAndroid Oのバグです。いずれかのプロファイルでChromeが無効になっている場合、再生によって更新されるまで、両方のプロファイルのWebViewが壊れています。

プロビジョニング中にこの問題を修正し、WebViewのを更新することを避けるために、あなたは、パッケージ名com.android.chromeDevicePolicyManager.enableSystemApp()を使用して仕事用プロファイルでChromeを有効にしてDevicePolicyManager.setUninstallBlocked()を使用してそれを無効にするからユーザーを防ぐことができます。

ユーザーがChromeブラウザを使用しないようにする場合は、DevicePolicyManager.setApplicationHidden()の代わりにDevicePolicyManager.setPackagesSuspended()を使用する必要があります。

1

私は他の人を助けるかもしれない回避策を見つけました。 AFW登録を開始する前に、デバイスのデベロッパーオプションにより、Webview ImplementationがChromeとして表示されます。 AndroidシステムWebviewが無効になっています。この時点で私がプレイストアに行くと、Android System Webviewが表示されますが、[有効にする]をクリックすると何も起こりません。私たちがAFWを行った後、管理されたプロファイルが正常に作成されたことがわかりました。私が今Playstoreに行くと、Android System Webviewの「更新」ボタンが表示され、更新できます。完了したら、開発者のオプションを見ると、webview実装がchromeからsystem webviewに切り替わりました。その後、私が仕事用コンテナで自分のアプリを起動すると、私はクラッシュを見ていないし、アプリケーションが期待どおりに動作します。また、作業プロファイルを削除すると、webview実装はchromeに戻ります。 Nexusデバイスでも同じことが起こりますが、webviewの更新は必要ありません。 webviewの実装は、クロムとシステムのWebビューの間を行き来し、物事は機能します。そのPixelだけで、私たちはそれを動作させるための更新を行います。

+0

この回避策は機能しますが、それは貧弱な経験です。プロビジョニング中に仕事用のプロフィールでChromeを有効にし、WebViewを更新する必要がなくなります。私の反応を見てください。 – Fred

+0

このエラーはOnePlus 5 Open Beta 1に現れ、この回避策はFred –

関連する問題