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()向後像前訪問已訪問過的站點
實現方法: