L'objet WebView

 

Il est possible d'afficher une page web dans votre application via un objet de type navigateur internet. Cependant, il ne s'agit pas ici de refaire tout ce que fait votre navigateur internet favoris: vous ne trouverez donc pas d'historique, de favoris, ...

 

Instancier le webview

Image non trouvée !La communication vers un site WEB est une consommation de DATA. Vérifiez votre forfait !

Image non trouvée ! N'oubliez pas que l'utilisateur a entre les mains un portable, une page d'un site Web ne doit pas être trop volumineuse !!! (les images consommes énormement et la 4G n'est pas encore disponible partout et par tout le monde !)

 

Image non trouvée !Je me répète, mais il ne s'agit pas de lancer un navigateur internet !

 

Exemple de codage d'un fichier layout

<WebView android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

 

Dans le fichier AndroidManifest.xml, il faudra rajouter la permission android.permission.INTERNET

Le fichier strings.xml:

 

Et le code Java pour gérer le webview

Vous pourrez ensuite avoir un site sur un serveur voire local via la méthode loadUrl() en indiquant le chemin d'accès via les termes http: ou file: (traditionnel dans les navigateurs, cf. rfc 1738).

browser.loadUrl("http://supertos.free.fr");

ou

browser.loadUrl("file:///android_asset/index.html");

Si vraiment c'est nécessaire, voici un exemple de fichier index.html...

Votre site sera placé dans le projet sous asset (vous pourrez mettre tout votre site: javascript, css, ...) . Pour accéder au répertoire asset, il faut bien indiquer android_asset, ce n'est pas une erreur dans l'exemple !

Image non trouvée !Par défaut, javascript est désactivé. Si vous voulez l'utiliser, il faudra l'activer comme ceci:

browser.getSettings().setJavaScriptEnabled(true); (cf. préférences)

 

D'autres méthodes intéressantes

  • Une autre possibilité de charger du code HTML sera d'utiliser la méthode loadData(). Cela permettra par exemple de construire des pages dynamiques.

    Cette méthode attend des paramètres:

    - Le code html

    - le type MIME (généralement text/html)

    - l'encodage (généralement UTF-8)

    Exemple:

    browser.loadData("<html><body>Essai HTML dynamique !</body></html>", "text/html", "UTF-8");

  • La navigation dans les pages est possible grâce aux méthodes suivantes:
    1. goBack() pour revenir à la page précédente enregistrée dans l'historique (canGoBack() pour tester l'existence d'une page précédente).
    2. goForward() pour aller vers la page suivante mémorisée (canGoForward() pour tester l'existence).
    3. goBackOrForward() pour aller vers la n ième page précédente ou suivante (un paramètre < 0 pour précédent, > 0 pour suivant). canGoBackOrForward() pour tester l'existence de la page...
  • reload() pour recharger la page courante.
  • clearCache() pour vider le cache du navigateur.
  • clearHistory() pour vider l'historique.

 

Préférences

Nous avons déjà parlé de l'option Javascript qui est désactivée par défaut.

En fait, nous devons passer par une instance WebSettings que l'on récupère grâce à la méthode getSettings() de notre WebView. A partir de cette instance, différentes options seront modifiables:

browser.getSettings().setJavaScriptEnabled(true); pour activer javascript. Mais il y en a d'autres:

  • setUserAgent() permet d'indiquer l'environnement sur lequel le navigateur est utilisé: 0 pour un navigateur tournant sur mobile, 1 pour un navigateur tournant sur un pc.
  • setJavaScriptCanOpenWindowsAutomatically() pour autoriser ou non javascript d'ouvrir une popup.
  • setDefaultFontSize() pour définir la taille d'une fonte en point.
  • setTextSize() pour indiquer une taille relative avec TextSize.LARGER (200%), TextSize.LARGEST (150%) , TextSize.NORMAL (100%), TextSize.SMALLER (75%) ou TextSize.SMALLEST (50%).
  • Il y en a encore d'autres...

 

Code HTML pouvant être intéressant sur mobile

Quelques options qui peuvent être intéressantes dans votre code html:

Pour téléphoner (RFC 3966):<a href="tel:0102030405">

Pour envoyer un SMS (RFC 5724):<a href="sms:12345678?body=Coucou">

Pour envoyer un email(RFC 2368): <a href="mailto:toto@gmail.fr?cc=titi@free.fr,tutu@yahoo.fr&amp;subject=Titre du Mail&ampbody=Le corps du message !">

 

Serveur Web sur votre appareil Android

Il existe une application AndroPHP qui permet de simuler un serveur web PHP & MySQL. Cela permet d'installer et de configurer rapidement un serveur WEB !