Module de Programmation Android (LP PRISM AirFrance)

TD5 - Applications web

Les objectifs de ce TD sont : Pour cela, vous allez réaliser une application chargeant cette propre page web, et interagissant avec elle pour effectuer d'autres actions.

Mise en place

Commencer une nouvelle application, avec une activité vide nommée par exemple TD5Activity. Cette application aura besoin d'accéder à internet: ajouter dans le manifeste, à l'intérieur des balises manifest (mais en dehors des balises application), la permission correspondante :
  <uses-permission android:name="android.permission.INTERNET" />

Utilisation d'un proxy

Si vous êtes derrière un proxy (notamment, si vous utilisez les machines de l'IUT), vous devez configurer ce proxy sur la tablette ou l'émulateur. Pour cela, aller dans les paramètres de la tablette ou l'émulateur, puis naviguer jusqu'à : Dans Proxy, entrer le nom ou l'adresse IP du proxy (sur les machines de l'IUT, proxy.iut-orsay.fr). Dans Port, entrer le port du proxy (sur les machines de l'IUT, 3128).

Plusieurs façons d'afficher des pages web

Nous allons d'abord explorer plusieurs façons de charger des pages web.

Activités web

Nous avons vu que les intentions étaient dédiées au lancement de nouvelles activités, et à la communication entre activités. Android fournit des intentions particulières permettant de lancer des activités web, dont la seule fonction est l'affichage d'une page web.

Vues web

Cette façon de procéder peut être utile lorsqu'on souhaite uniquement afficher une page web, mais ne permet pas d'avoir des objets Android (boutons, zones de texte, ... etc) en complément de la page web. Pour cela, il faut utiliser une vue web au sein d'une interface comportant également d'autres vues.

Interaction avec JavaScript

JavaScript permet d'exécuter du code dans des pages web. Dans le cadre d'applications web Android, ce code peut faire appel à des méthodes définies au niveau Java, permettant ainsi d'interagir avec le système Android.

Activation de JavaScript

Par défaut, JavaScript est désactivé dans les vues web. On peut le tester de la manière suivante : en cliquant sur cette image (ou en passant le curseur dessus, sur un ordinateur),

zone de test de javascript
le texte est modifié si JavaScript fonctionne, et n'est pas modifié sinon (source).

Utilisation de code Android en JavaScript

Voici deux boutons ayant pour but d'afficher une alerte :

Le premier affiche une alerte HTML de manière standard, tandis que le deuxième a pour but d'afficher une alerte Android. Le deuxième bouton cherche à appeler une méthode Java, nommée alert, pour afficher une alerte Android. Pour que cela fonctionne, il faut implanter cette méthode. Remarque : voici le code HTML des deux boutons :
  <input type="button" value="Sans parler à Android" onClick="alert('Je n\'ai pas besoin d\'Android')" />
  <input type="button" value="En parlant à Android" onClick="showAndroidAlert('Bonjour Android !')" />
  <script type="text/javascript">
    function showAndroidAlert(toast) {
      Android.alert(toast);
    }
  </script>

Navigation

Cela permet de suivre des liens, mais pas de revenir en arrière, ce qui est une fonctionnalité plutôt utile en navigant sur internet.

À vous de jouer

  1. Ajouter à l'interface un bouton permettant de rafraîchir la page web. On pourra utiliser la méthode reload de la classe WebView.
  2. Ajouter à l'interface une zone de texte éditable, dans le but que l'utilisateur entre une url, et un bouton, de manière à ce que l'url entrée par l'utilisateur se charge dans le vue web lorsqu'on clique dessus.
  3. Faire en sorte que l'url se charge lorsqu'on clique également sur le bouton suivant :
    Le code HTML de ce bouton est :
     <input type="button" value="Charger l'url se trouvant dans la zone de texte Android" onClick="loadUserUrl()" />
     <script type="text/javascript">
      function loadUserUrl() {
      Android.loadUserUrl();
      }
     </script>

Pour aller plus loin

Imaginer et implanter un mécanisme d'onglets. On pourra pour cela utiliser par exemple la classe ListView, dont voici un tutoriel.
Retour à la page du cours