WebView的使用,android與JS混編

WebView調用JS
一般用得到的就是WebView.load(String url) 。
如果需要支持JS。需要調用如下代碼:

  WebSettings seting = webView.getSettings();
   seting.setJavaScriptEnabled(true);

          //下行的代碼中紅色的方法爲js的函數
        webView.evaluateJavascript("createRoundRect(ctx,30,30,200,100,20)", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                //如果調用的JS的方法有返回值, 就在value裏面,目前只支持String類型
                Log.i("LOGOTAG>>>>>>",value);
            }
        });

如果網頁中有Alter無法彈出:
 webView.setWebChromeClient(new WebChromeClient(){});



JS中調用android代碼
     首先看Android代碼:
     先定義一個類,用來封裝給JS調用的方法

public class JavaInterFace{
    public  Context context;
    public  JavaInterFace(Context context){
        this.context=context;
    }
     //這裏必須加上這個註解,聲明爲JS接口,不然不可調用
    @JavascriptInterface
    public void show(String o){
        Toast.makeText(context, "APP上得到JS中的數字:"+o , Toast.LENGTH_LONG).show();
    }
}

然後綁定webView:
webView.addJavascriptInterface(new JavaInterFace(MainActivity.this), "Android");


JS中的代碼:
          <input type="button" value="調用Android代碼" onClick="showToast('Hello_Word')" />
                    <script type="text/javascript">
                    function showToast(toast){
                         Android.show(toast);         
                    }
          </script>




處理頁面導航:
當用戶點擊WebView中的一個鏈接的時候,默認是讓Android啓動一個可以處理URL的應用(就是打開手機自帶瀏覽器),如果你想讓WebView中加載顯示:
那麼只要爲WebView提供一個WebViewClient即可。
webView.setWebViewClient(new WebViewClient);

這樣,所有用戶單擊的鏈接會在webview中加載了

如果想要對於URL的加載有更嚴格的控制,重寫WebViewClient,覆蓋shouldOverrideUrlLoading()方法:




歷史記錄導航
當Webview覆蓋了URL加載之後,會生成歷史訪問記錄,可以通過goBack()或者goForward()向後像前訪問已訪問過的站點
實現方法:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章