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

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

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

设置webview支持javascript

  1. webview.getSettings().setJavaScriptEnabled(true);  
添加提供给javascript调用的类对象和接口名字
  1. webview.addJavascriptInterface(new JavascriptInterface(MyActivity.this), "mynamespace");  
供javascript调用的类的代码
  1.   public class JavascriptInterface {  
  2.     private Activity activity;  
  3.       
  4.     public JavascriptInterface(Activity activity){  
  5.         this.activity = activity;  
  6.     }  
  7.     public void toMyPage(){  
  8.         Intent intent = new Intent();  
  9.         intent.setClass(activity, AnotherActivity.class);  
  10.         activity.startActivity(intent);  
  11.     }  
  12. }  
为webview添加WebViewClient
  1. webview.setWebViewClient(new MyWebViewClient(this, browser));  

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

  1. public class MyWebViewClient extends WebViewClient {  
  2.       
  3.     private Context con;  
  4.       
  5.     public PTCWebViewClient(Context con, final WebView web){  
  6.         this.con = con;  
  7.     }  
  8.   
  9.     @Override  
  10.     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  11.         view.loadUrl(url);  
  12.         return true;  
  13.     }  
  14.     @Override  
  15.     public void onPageStarted(WebView view, String url, Bitmap favicon) {  
  16.         super.onPageStarted(view, url, favicon);  
  17.     }  
  18.     @Override  
  19.     public void onPageFinished(WebView view, String url) {  
  20.         super.onPageFinished(view, url);  
  21.         view.loadUrl("javascript:(function(){document.getElementById('snapNSendBtn').onclick=function(){window.ltamtc.toSnapNSend();}})()");  
  22.     }  
  23. }  
如此一来,每当这个webView加载完一个页面,而且这个页面有ID为“mySourceButton”的元素,那这个元素的点击事件就被修改为用户自定义的暴露给javascript调用的toMyPage()事件。一旦点击,界面就跳转,或者做任何你想做的事情

相关推荐