Mainactivity is as follows:
Package CN. testjavascript; import android. OS. bundle; import android. view. view; import android. view. view. onclicklistener; import android. webKit. webview; import android. widget. button; import android. app. activity;/*** demo Description: * JavaScript and Android Method * Mutual call ** reference: * http://blog.csdn.net/wangtingshuai/article/details/8631835 */public class mainactivity extends activity {private webview mwebview; private button mbutton; @ overrideprotected void oncreate (bundle savedinstancestate) {super. oncreate (savedinstancestate); setcontentview (R. layout. main); Init ();} private void Init () {// The following JavaScript calls Java -------------------------- mwebview = (webview) findviewbyid (R. id. webview); initwebviewsettings (); // load the local HTML file mwebview. loadurl ("file: // android_asset/test.html"); // Note: // The second parameter in the addjavascriptinterface method // It represents the alias of our Java object javaclass. in this way, JS can use this alias to call the method in Android // that is, JS Code In: // window. testjs. firstfunction // window. testjs. secondfunctionjavaclass javaclass = new javaclass (mainactivity. this); mwebview. addjavascriptinterface (javaclass, "testjs"); // Java calls JavaScript ------------------------ // Note: // when calling a JavaScript method with parameters, // write the parameter, // mwebview. loadurl ("javascript: javacalljswithargs (" + "'stringarg '" + ")"); // the error message "mbutton = (button) findviewbyid (R. id. button); mbutton. setonclicklistener (New onclicklistener () {@ overridepublic void onclick (view v) {// call mwebview without parameters in JavaScript. loadurl ("javascript: javacalljs ()"); // call the mwebview method with parameters in JavaScript. loadurl ("javascript: javacalljswithargs (" + "'stringarg '" + ")") ;}}private void initwebviewsettings () {mwebview. setverticalscrollbarenabled (false); mwebview. sethorizontalscrollbarenabled (false); mwebview. getsettings (). setjavascriptenabled (true); mwebview. getsettings (). setsuppzoom zoom (true); mwebview. getsettings (). setdomstorageenabled (true); mwebview. getsettings (). setpluginsenabled (true); mwebview. requestfocus (); mwebview. getsettings (). setusewideviewport (true); mwebview. getsettings (). setloadwithoverviewmode (true); mwebview. getsettings (). setsuppzoom zoom (true); mwebview. getsettings (). setbuiltinzoomcontrols (true );}}
Javaclass is as follows:
Package CN. testjavascript; import android. content. context; import android. widget. toast; public class javaclass {private context mcontext; Public javaclass (context) {This. mcontext = context;} public void firstfunction () {toast. maketext (mcontext, "javascipt calls methods in Java, without Parameters", toast. length_short ). show ();} public void secondfunction (string) {toast. maketext (mcontext, "javascipt calls the method in Java and carries the following parameters:" + String, toast. length_short ). show ();}}
Main. XML is as follows:
<Relativelayout xmlns: Android = "http://schemas.android.com/apk/res/android" xmlns: Tools = "http://schemas.android.com/tools" Android: layout_width = "match_parent" Android: layout_height = "match_parent"> <webview Android: id = "@ + ID/webview" Android: layout_width = "fill_parent" Android: layout_height = "370dip" Android: layout_centerhorizontal = "true"/> <button Android: id = "@ + ID/button" Android: layout_width = "fill_parent" Android: layout_height = "wrap_content" Android: text = "after clicking it, Java calls JavaScript" Android: layout_alignparentbottom = "true"/> </relativelayout>
Test.html:
<HTML>