android:如何在java代码中覆盖webview中的javascript事件

Title:如何通过点击android的webView中的一个元素打开native的界面(activity)

如何在webView中直接打开native的界面


设置webview支持javascript

webview.getSettings().setJavaScriptEnabled(true);

添加提供给javascript调用的类对象和接口名字

webview.addJavascriptInterface(new JavascriptInterface(MyActivity.this), "mynamespace");

供javascript调用的类的代码

public class JavascriptInterface {

	private Activity activity;
	
	public JavascriptInterface(Activity activity){
		this.activity = activity;
	}
	public void toMyPage(){
		Intent intent = new Intent();
		intent.setClass(activity, AnotherActivity.class);
		activity.startActivity(intent);
	}
}

为webview添加WebViewClient

webview.setWebViewClient(new MyWebViewClient(this, browser));


在MyWebViewClient的onPageFinished方法中注入javascript代码

public class MyWebViewClient extends WebViewClient {
	
	private Context con;
	
	public PTCWebViewClient(Context con, final WebView web){
		this.con = con;
	}

	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
		view.loadUrl(url);
		return true;
	}
	@Override
	public void onPageStarted(WebView view, String url, Bitmap favicon) {
		super.onPageStarted(view, url, favicon);
	}
	@Override
	public void onPageFinished(WebView view, String url) {
		super.onPageFinished(view, url);
		view.loadUrl("javascript:(function(){document.getElementById('snapNSendBtn').οnclick=function(){window.ltamtc.toSnapNSend();}})()");
	}
}


如此一来,每当这个webView加载完一个页面,而且这个页面有ID为“mySourceButton”的元素,那这个元素的点击事件就被修改为用户自定义的暴露给javascript调用的toMyPage()事件。一旦点击,界面就跳转,或者做任何你想做的事情

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值