AddJavaScipteInterface (Object obj, String Interfacename) is used to bind a java Object to a javaste Object. The javaScripte Object Name Is interfaceName.
Package com.king.android.net;
Import android. app. Activity;
Import android. OS. Bundle;
Import android. webkit. WebView;
Import com. king. android. R;
/**
* Description: mutual use of webview and js
* Author: Andy. Liu
* Time: 08:24:06
**/
Public class WebAndJsActivity extends Activity {
Private WebView mWebView = null;
Private PersonalData mPersonalData; // save data
@ Override
Protected void onCreate (Bundle savedInstanceState ){
Super. onCreate (savedInstanceState );
SetContentView (R. layout. webview_layout );
MPersonalData = new PersonalData ();
MWebView = (WebView) findViewById (R. id. wv_view );
MWebView. getSettings (). setJavaScriptEnabled (true );
// Add an instance of this class to the global javascript Object window, so that you can use windowPersonData to call its method.
MWebView. addJavascriptInterface (this, "PersonalData ");
// Load the webpage
MWebView. loadUrl ("file: // android_asset/PersonalData.html ");
}
Public PersonalData getPersonalData (){
Return mPersonalData;
}
// Call the information displayed in the js script
Class PersonalData
{
String mID;
String mName;
String mAge;
String mBlog;
Public PersonalData ()
{
This. mID = "123456789 ";
This. mName = "Android ";
This. mAge = "100 ";
This. mBlog = "http://xxx.javaeye.com ";
}
Public String getID ()
{
Return mID;
}
Public String getName ()
{
Return mName;
}
Public String getAge ()
{
Return mAge;
}
Public String getBlog ()
{
Return mBlog;
}
}
}
Js Script: window. onload = function (){
Var personaldata = window. PersonalData. getPersonalData ();
If (personaldata)
{
Var Personaldata = document. getElementById ("Personaldata ");
Pnode = document. createElement ("p ");
Tnode = document. createTextNode ("ID:" + personaldata. getID ());
Pnode. appendChild (tnode );
Personaldata. appendChild (pnode );
Pnode = document. createElement ("p ");
Tnode = document. createTextNode ("Name:" + personaldata. getName ());
Pnode. appendChild (tnode );
Personaldata. appendChild (pnode );
Pnode = document. createElement ("p ");
Tnode = document. createTextNode ("Age:" + personaldata. getAge ());
Pnode. appendChild (tnode );
Personaldata. appendChild (pnode );
Pnode = document. createElement ("p ");
Tnode = document. createTextNode ("Blog:" + personaldata. getBlog ());
Pnode. appendChild (tnode );
Personaldata. appendChild (pnode );
}
}
Of course, you can also directly call js methods in java code, so that you can call each other to obtain data.
WebView. loadUrl ("javascpite: Method Name ()");