安卓Native和H5頁面進行交互


安卓Native和H5頁面進行交互


  1、H5頁面調用安卓Native界面
    1)通過給webView添加JsInterface,安卓提供接口,讓H5來進行調用
        a)安卓寫一個類,里面的方法需要用通過注解來表明是java接口的方法。

      eg:

private  class WebInterface {
        @JavascriptInterface
        public void callFromJSBasicDataType(int x, float y, char c, boolean result) {
            String str = "-" + (x + 1) + "-" + (y + 1) + "-" + c + "-" + result;
            Log.e("tttt", "tttttt"+str);
        }
        @JavascriptInterface
        public void callAndroidMethod() {
            Log.e("tttt", "tttttt2");
        }
    }

     b)設置webView可以支持js
      eg:
          webView.getSettings().setJavaScriptEnabled(true);
         c)給webView添加js接口類,並取別名
          webView.addJavascriptInterface(new WebInterface(), "robot");
    
    至此,安卓的配置完成了。
    
      下面配置HTML頁面
      在代碼中添加下面的代碼,如果加載了頁面了,就會調用起別名叫robot這個接口類里面的js接口方法
    <p>
        <button onclick="robot.callFromJSBasicDataType(1,2,'a',true);">點擊我調用android 方法</button>
    </p>

    2)通過設置webview的setWebViewClient。安卓通過url跳轉時的改變,來進行不同的操作
當webview加載的頁面出現變化的時候,可以進行不同的操作,例如訪問站外的網址,或者黑名單的網址進行提示
    eg:

wb.setWebViewClient(new Custom());
    
    private class Custom extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            Log.e("tttt", url);
            if (url.contains("bai")) {
                Dialog d=new Dialog(MainActivity.this);
                d.setTitle("ttttt");
                d.show();
                return true;
            }
            return false;
        }
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
        }
    }

  2、安卓Native界面調用H5方法
主要就是通過webview的LoadUrl方法
eg:
webView.loadUrl("javascript:noParamFunction();");
注:需要頁面加載完成之后調用才有效。因為js腳本需要完全加載到頁面中才可以調用到,否則沒有任何效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM