不多说,直接上干货!
1.使用webview对象的addJavascriptInterface方法
2.addJavascriptInterface方法有两个参数,第一个参数就是我们一般会实现一个自己的类,类里面提供我们要提供给javascript访问的方法;第二个参数是访问我们在obj中声明的方法时候所用到的js对象,调用模式为window.interfaceName.方法名()或者是javascript: interfaceName.方法名() ;,如DemoWebView.addJavascriptInterface(new JavaScriptinterface(this), "android");
3.编写JavaScriptinterface类,如有一个函数名为showToast()的方法
4.在html中调用时的形式:javascript:android.showToast()。
可以查阅:http://www.cnblogs.com/lee0oo0/archive/2012/08/01/2617953.html 写得很明白。
android加载:
DemoWebView = (WebView) findViewById(R.id.myWebView);
DemoWebView.getSettings().setJavaScriptEnabled(true);
DemoWebView.addJavascriptInterface(this,
"demoAndroidObj");//将当前activity赋值给js中的window对象。
String htmlText = getFromAssets("test.html");
//把myWebView加载html
DemoWebView.loadData(htmlText, "text/html", "utf-8");
DemoWebView.setWebViewClient(new myWebViewClient());
js调用:
<script type="text/javascript">
function Redirect(param1,param2,param3) { window.demoAndroidObj.Redirect(param1,param2,param3);
}
</script></head><body><input type="button" value="Say hello" onClick="Redirect('1','RedirectActivity','demo')" /></body></html>
android回调:
此回调由 demoAndroidObj 所对应的activity实现。
public void Redirect(string type, String activityName, String demoNma) {
Message message = new Message();
message.what = redirectType;
Bundle bundle = new Bundle();
bundle.putString("type", type);
bundle.putString("activityName",activityName);
bundle.putString("demoName",demoName);
message.setData(bundle);handler.sendMessage(message);}
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Intent intent = new Intent();
Bundle data = msg.getData();
String type = data.getString("type");
String activityName= data.getString("activityName");
String demoName= data.getString("demoName");
intent.putExtra("type",type);
intent.putExtra("demoName",demoName);
startActivity(intent, activityName, true);
window.demoAndroidObj.Redirect(param1,param2,param3);
这方法实际上调用的就是 activity中 public void Redirect(string type, String activityName, String demoNma)
如此即可完成想要的交互效果。