Android WebView VS navigateur téléphonique

j'ai connu beaucoup de comportements étranges avec l'utilisation de WebView dans Android et je me demande pourquoi il y a tant de différences entre le WebView et le Browser installé sur chaque téléphone?

à titre d'exemple, j'ai développé certaines applications qui devaient afficher le contenu HTML , qui contenait soit jquery-mobile , flash , javascript , YouTube intégré et ainsi de suite. J'ai donc eu beaucoup de problèmes avec l'affichage de ces pages à l'intérieur de WebViews . Soit elles ne s'affichent pas du tout, juste Vierges, soit les vidéos ne seront pas lues et ainsi de suite. Et la chose étrange est qu'ils fonctionnent correctement lorsqu'il est ouvert dans les Browser installé sur le téléphone. J'avais JavaScript activé, j'ai essayé diffrent WebSettings , j'avais mis le WebChromeClient et WebViewClient à la recherche d'erreurs javascript... mais rien n'a fonctionné.

Donc Je je suis arrivé à la conclusion que le composant WebView est complètement différent de l'application Browser installée sur les téléphones. Je pense que chaque fabricant fabrique son propre Browser pour supporter autant de pages que possible, et le WebView reste le standard, inclus dans le Android SDK .

n'est-ce pas? Ou y a-t-il une autre explication à cela? Grâce.

EDIT: Everything que @ondoteam a suggéré était activé et réglé à l'heure. Je n'ai plus les références à ces sites, qui étaient de toute façon internes.

31
demandé sur Ovidiu Latcu 2011-09-10 22:02:01

4 réponses

cet article décrit vos spéculations sur les différences de stocks de navigateur entre les fabricants, qui est absolument vrai: 5 la réalité vérifie chaque équipe a besoin avant de travailler sur Android webkit

...ce qui ne cause des problèmes et mystérieux/difficile à diagnostiquer/résoudre les problèmes.

en ce qui concerne vos problèmes avec votre WebView mise en œuvre:

Version de jquery-mobile peut-être un problème jQuery-mobile chargé dans un android WebView si vous utilisez jquery.mobile-1.0.1.min.js vous pouvez vouloir essayer le non compressé jquery.mobile-1.0.1.js

et Flash: - / bonne chance: clignotement D'écran lors de l'utilisation d'un webview avec flash

Flash dans WebView ne fonctionne pas sur Android 3.2

Flash video ne s'affichant pas dans WebView pour Android 3.0.1

pour le chargement SWF:

Charger un SWF dans une WebView

chargement de fichiers flash (.swf) webview android

Bonne chance avec cela, semble, comme beaucoup de variables avec les appareils, les versions d'Android, etc. Et prendra persistance avec essai / erreur.

12
répondu TryTryAgain 2017-05-23 12:34:42

WebView par défaut est limité. Vous devez appeler setWebChromeClient et la famille pour avoir une expérience de navigation décente. En outre, n'oubliez pas setJavaScriptEnabled() et d'autres choses similaires. Désolé pour mon souci de concision... Je pense que vous n'avez pas besoin d'exemples.

http://developer.android.com/reference/android/webkit/WebView.html

8
répondu ondoteam 2012-01-25 13:54:15

le navigateur de stock et WebView diffèrent .En utilisant tous les ajustements comme

            WebView browser;

            browser.clearFormData();
    browser.clearHistory();
    browser.clearCache(true);

    browser.getSettings().setAppCacheEnabled(true);
    browser.getSettings().setDatabaseEnabled(true);
    browser.getSettings().setDomStorageEnabled(true);
    browser.setWebChromeClient(new WebChromeClient());

pourtant, il ne charge pas correctement les images haute résolution qui est chargé parfaitement bien par le navigateur android. Seule une partie de l'image peut être visible sur l'écran webview qui apparaît entièrement sur le navigateur android normal. Ce comportement est également observé avec le dernier SDK 4x Android. Ce qui signifie que le navigateur android par défaut modifie considérablement le code webkit / webview pour montrer n'importe quelle url

8
répondu Vatsal Desai 2013-06-10 06:56:41

avez-vous coché cette question: jquery-mobile chargé dans un android WebView

il se peut que vous utilisiez les mauvaises bibliothèques. Il suffit de vérifier dans tous les cas.

1
répondu bytebiscuit 2017-05-23 12:03:01