Aller au contenu

Déclencher du Javascript lors du onClick d'un bouton natif Android


Kricek

Recommended Posts

Salut tout le monde!

Je bosse actuellement sur un projet mêlant du Flash (inclus dans une WebView) et du natif Android. De l'hybride en quelques sortes... :)

J'ai fait quelques recherches et j'ai trouvé comment capter l'action d'un bouton de la WebView (grâce à une JavascriptInterface) et j'arrive à déclencher l'affichage d'un Toast lors de l'appui sur un bouton contenu dans ma page web ( B) ) et je suis fier car j'ai bien galéré!

Mais maintenant, je recherche l'inverse: Capter dans la WebView l'action d'un bouton natif Android lancer, par exemple, l'ouverture d'une Alerte lors de l'appui sur un bouton extérieur à la WebView.

Quelqu'un aurait une idée?

Edit : J'ai trouvé tout seul finalement. Pour ceux que ça intéresse, voici comment j'ai procédé:

Apparemment, il n'est pas possible de modifier la WebView depuis un thread non UI (normal). Il est donc nécessaire d'implémenter un Handler dans le onCreate():

final Handler handler = new Handler() {
		public void handleMessage(Message msg) {
			WebV.loadUrl("javascript:BoutonAndroidClick();");
		}
	};

Ensuite, il faut définir le onClick du bouton, qui va déclencher l'envoi d'un message au Handler:

		bouton.setOnClickListener(new OnClickListener() {
		@Override
		public void onClick(View v) {
			handler.sendMessage(handler.obtainMessage());
		}
	});

Et enfin, dans le javascript, ajouter la fonction qui effectuera l'action désirée dans la page HTML:

function BoutonAndroidClick() { document.write(\"Hello World!\"); };

Petite note: Pas la peine de chercher à faire des tests avec une simple "alerte" Javascript... L'implémentation d'une alerte Javascript est un peu plus compliquée que ça. Pour ceux que ça intéresse, allez voir cette page. Il semblerait que les alertes soient obligées d'être codées en Android... Affaire à suivre.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...