J'ai une application hybride Cordova Android, et l'application se bloque lorsque l'utilisateur appuyez sur une zone de liste déroulante dans mon WebView
fonctionnant sous Android OS 8. Je ' Nous avons créé une page simple avec un tag <select>
et le problème est reproductible. J'ai une solution de contournement qui consiste à faire ma propre alerte pop-up pour sélectionner, mais je me demandais juste si cela arrive à quelqu'un d'autre et s'il s'agit d'un bug OS8 WebView
.Pourquoi Android OS 8 WebVew avec balise de sélection HTML crash l'application
Ci-dessous est une simple page avec <select>
tag
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select
Ci-dessous est mon journal crash
11:04:58.643 3208-3208/com.****.****E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.****.****, PID: 3208 android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:195)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2133)
at android.content.res.Resources.getLayout(Resources.java:1142)
at android.view.LayoutInflater.inflate(LayoutInflater.java:421)
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:416)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:407)
at org.chromium.content.browser.input.SelectPopupAdapter.getView(SelectPopupAdapter.java:53)
at android.widget.AbsListView.obtainView(AbsListView.java:2372)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1408)
at android.widget.ListView.onMeasure(ListView.java:1315)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:21998)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721)
at android.view.View.measure(View.java:21998)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1471)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
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)
Ma question n'est pas la même chose que ce
Trying to open SELECT tag in Android WebView crashes the application
MISE À JOUR sur 9 janvier 2018: Je n'ai pas encore de solution, ma solution de contournement temporaire est de supprimer la balise et d'utiliser simplement une entrée. Lorsque l'utilisateur sélectionne cet élément, nous passons l'événement au code natif pour faire apparaître une boîte de dialogue pour la sélection et mettre à jour l'entrée une fois que l'utilisateur a fait une sélection.
Je ne peux pas reproduire ceci sur un Google Pixel fonctionnant sous Android 8.0.0. Appuyez sur la zone de liste déroulante pour afficher une boîte de dialogue comme prévu. Ma configuration 'WebView' est minimale, juste' setJavaScriptEnabled (true) '. FWIW, ce problème [semble avoir été rapporté plus tôt cette année pour Android 7.0] (https://issuetracker.google.com/issues/37137929), mais personne n'a fourni un cas de test reproductible, donc le problème n'est allé nulle part. – CommonsWare
Des nouvelles à ce sujet? –
Puis-je savoir comment vous avez résolu ce problème? Je reçois également le même problème dans mon application dans Google Pixel. Mais cela fonctionne très bien dans le navigateur de pixels et aussi dans une autre application fictive que j'ai créée. – Nivedh