Cordova Hybrid Development: native call JavaScript in Android
Last Update:2016-03-29
Source: Internet
Author: User
<span id="Label3"></p><p><p>Learn how to call JavaScript methods in Java today and make a note:</p></p><p><p>The first way, this is the Simplest:</p></p><pre class="brush:java;gutter:true;"><pre class="brush:java;gutter:true;">Loadurl ("javascript:func1 ()");</pre></pre><p><p>Note that the method undefined error will be reported after Deviceready: "uncaught referenceerror:fun1 is not defined";</p></p><p><p></p></p><p><p>The second way: to register a channel, in native to send a callback to js, this is the new version of Cordova recommended Method:</p></p><p><p>Javascript:</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">myinit () {alert (</span></span>' 12355 '<span style="color: #000000;"><span style="color: #000000;">);}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">the <span style="color: #008000;">most convenient is to find a ready-made plug-in add a function "calljsinit", can perform registration can be</span></span>Cordova.define ("plugin id",<span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">(require, exports, Module) {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span>exec = require (' cordova/exec '<span style="color: #000000;"><span style="color: #000000;">); Window.calljsinit</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">() {cordova.require (</span></span>' Cordova/channel '). oncordovaready.subscribe (<span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">() {exec (succeedcallback,</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>, "pluginname", "calljsinit"<span style="color: #000000;"><span style="color: #000000;">, []); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span><span style="color: #000000;"><span style="color: #000000;">succeedcallback (message) {</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Execute JS Code</span></span><span style="color: #000000;"><span style="color: #000000;">Eval (message); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">and <span style="color: #008000;">you can do it, dare to play with your imagination</span> .</span> <span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">if (message== ' F1 ') alert (1); else if (message = = ' F2 ') alert (2); ...</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span><span style="color: #000000;"><span style="color: #000000;">}}); }});</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">execute after app deviceready:</span></span>Calljsinit ()</pre><p><p>Java files:</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span>Pluginname<span style="color: #0000ff;"><span style="color: #0000ff;">extends</span></span><span style="color: #000000;"><span style="color: #000000;">Cordovaplugin {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Private</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span><span style="color: #000000;"><span style="color: #000000;">Callbackcontext mcallbackcontext; @Override</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Boolean</span></span>Execute (String action,<span style="color: #0000ff;"><span style="color: #0000ff;">Final</span></span><span style="color: #000000;"><span style="color: #000000;">Jsonarray args,</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Final</span></span>Callbackcontext Callbackcontext)<span style="color: #0000ff;"><span style="color: #0000ff;">throws</span></span><span style="color: #000000;"><span style="color: #000000;">jsonexception {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(action.equals ("calljsinit"<span style="color: #000000;">) <span style="color: #000000;">) {mcallbackcontext</span></span>= callbackcontext;<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">get the callback object and save</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Pluginresult dataresult = new Pluginresult (PluginResult.Status.OK, "calljs init ready"); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Dataresult.setkeepcallback (true);</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">very Important</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Mcallbackcontext.sendpluginresult (dataresult);</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">true</span></span><span style="color: #000000;"><span style="color: #000000;">; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span><span style="color: #000000;"><span style="color: #000000;"> { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">false</span></span><span style="color: #000000;"><span style="color: #000000;">; }} @Override</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span><span style="color: #000000;"><span style="color: #000000;">Object OnMessage (String id, object Data) {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">Calljs (String Message) {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(mcallbackcontext! =<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">) {pluginresult Dataresult</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span><span style="color: #000000;"><span style="color: #000000;">Pluginresult (PluginResult.Status.OK, message); Dataresult.setkeepcallback (</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">true</span></span>);<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">very Important</span></span><span style="color: #000000;"><span style="color: #000000;">Mcallbackcontext.sendpluginresult (dataresult); } }}</span></span></pre><p><p>To invoke JS in other Java files:</p></p><pre><pre>Pluginname.calljs ("myinit ()");</pre></pre><p><p>Running the app will show the contents of the "myinit" method.</p></p><p><p>Cordova Hybrid Development: native call JavaScript in Android</p></p></span>