Cordova Hybrid Development: native call JavaScript in Android

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>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.