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

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

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


设置webview支持javascript

[java] view plaincopy
  1. webview.getSettings().setJavaScriptEnabled(true);  

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

[java] view plaincopy
  1. webview.addJavascriptInterface(new JavascriptInterface(MyActivity.this), "mynamespace");  

供javascript调用的类的代码

[java] view plaincopy
  1. public class JavascriptInterface {  
  2.   
  3.     private Activity activity;  
  4.       
  5.     public JavascriptInterface(Activity activity){  
  6.         this.activity = activity;  
  7.     }  
  8.     public void toMyPage(){  
  9.         Intent intent = new Intent();  
  10.         intent.setClass(activity, AnotherActivity.class);  
  11.         activity.startActivity(intent);  
  12.     }  
  13. }  

为webview添加WebViewClient

[java] view plaincopy
  1. webview.setWebViewClient(new MyWebViewClient(this, browser));  


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

[java] view plaincopy
  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()事件。一旦点击,界面就跳转,或者做任何你想做的事情
上一篇:hive元数据连接失败


下一篇:Mysql资料 Binlog