The following code shows how to Execute Javascript in WebView.
Main layout xml file
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="hello" /> </LinearLayout>
Main Activity Java code
package com.java2s.myapplication3.app; //from w w w . j a v a 2 s . c o m import android.annotation.TargetApi; import android.app.Activity; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.webkit.JavascriptInterface; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView webview = new WebView(this); webview.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient(mClient); webview.addJavascriptInterface(new MyJavaScriptInterface(), "BRIDGE"); setContentView(webview); webview.loadUrl("file:///android_asset/form.html"); } private static final String JS_SETELEMENT = "javascript:document.getElementById('%s').value='%s'"; private static final String JS_GETELEMENT = "javascript:window.BRIDGE.storeElement('%s',document.getElementById('%s').value)"; private static final String ELEMENTID = "emailAddress"; private WebViewClient mClient = new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { executeJavascript(view,String.format(JS_GETELEMENT, ELEMENTID, ELEMENTID) ); return false; } @Override public void onPageFinished(WebView view, String url) { SharedPreferences prefs = getPreferences(Activity.MODE_PRIVATE); executeJavascript(view,String.format(JS_SETELEMENT, ELEMENTID, prefs.getString(ELEMENTID, "")) ); } }; private void executeJavascript(WebView view, String script) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { view.evaluateJavascript(script, null); } else { view.loadUrl(script); } } class MyJavaScriptInterface { @JavascriptInterface public void storeElement(String id, String element) { SharedPreferences.Editor edit = getPreferences(Activity.MODE_PRIVATE).edit(); edit.putString(id, element); edit.commit(); if(!TextUtils.isEmpty(element)) { Toast.makeText(MainActivity.this, element, Toast.LENGTH_SHORT).show(); } } } }
\assets\form.html
<!DOCTYPE HTML> <html> <form name="input" action="form.html" method="get"> Enter Email: <input type="text" id="emailAddress" /> <input type="submit" value="Submit" /> </form> </html>