在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法。为了让大家容易理解,我写了一个简单的Demo,代码如下:
package com.example.webviewtest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private WebView webview;
private TextView textview;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView) findViewById(R.id.webView1);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setSupportZoom(true);
webview.getSettings().setBuiltInZoomControls(true);
textview = (TextView) findViewById(R.id.textView1);
webview.loadUrl("file:///android_asset/test.html");
final Handler mHandler = new Handler();
webview.addJavascriptInterface(new Object() {
@SuppressWarnings("unused")
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
textview.setText("success");
}
});
}
}, "demo");
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
webview.loadUrl("javascript:change()");
}
});
}
}
<script language="JavaScript">
function change() {
if(document.form1.num.value=="提交")
{
document.form1.num.value="撤销";
}
else
{
document.form1.num.value="提交";
}
}
</script>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<body>
<form name="form1">
<input name="num" type="button" value="提交" onClick="window.demo.clickOnAndroid()">
</form>
</body>
</html>