歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android:如何在java代碼中覆蓋webview中的javascript事件

Android:如何在java代碼中覆蓋webview中的javascript事件

日期:2017/3/1 11:15:20   编辑:Linux編程

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. public JavascriptInterface(Activity activity){
  4. this.activity = activity;
  5. }
  6. public void toMyPage(){
  7. Intent intent = new Intent();
  8. intent.setClass(activity, AnotherActivity.class);
  9. activity.startActivity(intent);
  10. }
  11. }
為webview添加WebViewClient
  1. webview.setWebViewClient(new MyWebViewClient(this, browser));

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

  1. public class MyWebViewClient extends WebViewClient {
  2. private Context con;
  3. public PTCWebViewClient(Context con, final WebView web){
  4. this.con = con;
  5. }
  6. @Override
  7. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  8. view.loadUrl(url);
  9. return true;
  10. }
  11. @Override
  12. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  13. super.onPageStarted(view, url, favicon);
  14. }
  15. @Override
  16. public void onPageFinished(WebView view, String url) {
  17. super.onPageFinished(view, url);
  18. view.loadUrl("javascript:(function(){document.getElementById('snapNSendBtn').onclick=function(){window.ltamtc.toSnapNSend();}})()");
  19. }
  20. }

如此一來,每當這個webView加載完一個頁面,而且這個頁面有ID為“mySourceButton”的元素,那這個元素的點擊事件就被修改為用戶自定義的暴露給javascript調用的toMyPage()事件。一旦點擊,界面就跳轉,或者做任何你想做的事情
Copyright © Linux教程網 All Rights Reserved