Je tente de créer un service Android qui effectue une tâche en utilisant JavaScript. Je suis tombé sur this post qui décrit comment exécuter du code JavaScript à l'intérieur d'un WebView
dans un service en utilisant le WindowManager
. Je suis en mesure de créer un WebView
avec un fichier .html
et .js
sans problème. C'est une fois que j'essaie de transmettre des données à partir du service android .java
au WebView
que je rencontre un problème.impossible d'exécuter le code javascript dans Android WebView à partir du service
J'ai essayé faire de cette façon:
final WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
...
wv = new WebView(this);
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("file:///android_asset/www/test.html");
windowManager.addView(wv, params); // params set using method from linked post above
wv.evaluateJavascript("console.log('hello');", null);
wv.loadUrl("javascript:console.log('blah')");
Ni l'appel à evaluateJavascript()
ni loadUrl()
semblent avoir aucun effet sur la WebView (j'accéder à la console à l'aide des outils de développement de chrome).
J'ai testé que dans test.html
je peux ajouter un tag <script>
et le texte de sortie à la console sans problème.
J'ai également essayé d'appeler les fonctions avant d'ajouter la vue en vain.
Je recommanderais d'utiliser un interpréteur JavaScript pour cela, comme [duktape] (https://github.com/square/duktape-android). – CommonsWare
@CommonsWare La raison pour laquelle je ne suis pas est que mon code utilise différentes capacités de navigateur que je devrais réimplémenter si j'utilisais quelque chose comme duktape (pour autant que je sache) –
Donc ce que je comprends ce que vous voulez c'est charger test.html et exécutez du code JS? – Steven