android、webview、js交互

来源:互联网 发布:怎么做淘宝网页 编辑:程序博客网 时间:2024/05/17 14:15

不多说,直接上干货!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() {@Overridepublic 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)如此即可完成想要的交互效果。


0 0
原创粉丝点击