WebView.draw () ne fonctionne pas correctement sur la dernière mise à jour de WebView System System Android

J'utilise actuellement WebView.draw() pour prendre une capture d'écran de l'ensemble du WebView et l'enregistrer dans un Bitmap (basé sur cette solution ). Cela a parfaitement fonctionné jusqu'à présent.

J'ai récemment testé cette fonctionnalité sur un Nexus 5 (notez que sur le Nexus 5, la WebView en question est plus grande que l'écran, de sorte que l'utilisateur peut défiler horizontalement et verticalement) en exécutant Lollipop 5.1 et la dernière mise à jour de Android System WebView ( Version 42.0.2311.137 au moment de l'écriture) lorsque j'ai remarqué que le bitmap généré était incorrect. Il avait les dimensions correctes, mais au lieu de montrer l'ensemble du WebView, il n'avait que la partie de la WebView qui était visible pour l'utilisateur lorsque la méthode était appelée.

  • Mode statique pour obtenir 'Context' sur Android?
  • Enregistrement de Logcat dans un fichier texte dans un périphérique Android
  • Question Progaurd "Attention: Ignorer l'attribut InnerClasses pour une classe interne anonyme"
  • Comment détecter quand le périphérique est orienté à l'envers dans libGDX
  • Java.io.FileNotFoundException (Autorisation refusée) Lorsque vous essayez d'écrire sur la carte SD Android
  • Impossible d'appeler la méthode notifyItemInserted dans un callback recyclage-v7: 24.2.0
  • J'ai essayé de désinstaller toutes les mises à jour sur Android System WebView (ce qui le ramène à la version 39 (1743759-bras) et, avec la version d'usine, la fonctionnalité fonctionne bien. Donc, ce problème est dû à une mise à jour relativement récente du système Android WebView. Je n'ai pas pu trouver un journal de changement, donc je ne peux pas comprendre ce qui a changé et comment le réparer. Voici une explication visuelle rapide:

    Est-ce que quelqu'un d'autre a rencontré ce problème et trouvé une solution possible?

  • Comment actualiser un GridView?
  • Est-il possible d'exécuter un émulateur Android sans configurer Eclipse
  • Comment contrôler paysage et portrait par programme dans Android?
  • Qu'est-ce que le dexopt? (Commande Android Shell)
  • Quelle est l'alternative pour Canvas.getMatrix () obsolète?
  • Encodeur et décodeur Base64
  • One Solution collect form web for “WebView.draw () ne fonctionne pas correctement sur la dernière mise à jour de WebView System System Android”

    Vous devez appeler WebView.enableSlowWholeDocumentDraw () avant de créer des WebViews. C'est-à-dire, si vous avez des WebViews dans votre mise en page, assurez-vous d'appeler cette méthode avant d' appeler setContentView() dans votre onCreate() .

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.