android、webview、js交互

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






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值