在Android開發中常常用到WebView,就會涉及到安卓的java代碼和網頁中的javaScript方法的相互調用.
準備工作
最基本的要得到WebView對象
@Bind(R.id.webview) WebView webview; WebView webview= (WebView) findViewById(R.id.webview);
兩種方法
- 使用ButterKnife插件 註解
- 普通findViewById
設置默認的文本編碼方式爲utf-8
webview.getSettings().setDefaultTextEncodingName("utf-8");
允許執行js代碼
webview.getSettings().setJavaScriptEnabled(true);
Java代碼去調用JavaScript中的方法
網頁中的JavaScript代碼
<script type="text/javascript">
function changeInputValue(content){
document.getElementById("put_id").value=content;
}
</script>
比如我們想在java代碼去調用網頁中changeInputValue這個方法
webview.loadUrl("javascript:changeInputValue('我是參數')");
webView調用loadUrl方法,值是一個字符串
寫法:
javascript: + JavaScript中的方法名('參數');
HTML(網頁)代碼去調用Java中的方法
java中代碼:
webview.addJavascriptInterface(new JavaScriptInterface(),"AndroidMethod");
class JavaScriptInterface{
@JavascriptInterface
public void showToast(String content){
Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show();
}
}
使用webview調用addJavascriptInterface方法,給網頁一個方法"接口"類
兩個參數
1."接口"類 對象 直接new出來
2. 起個名字給JavaScript調用使用
寫一個方法"接口"類
在類中寫方法 低版本在方法上不用寫註解就可以 高版本一定要寫上註解,不然無法調用
JavaScript 中代碼
<script type="text/javascript">
function showAndroidMethod(content) {
AndroidMethod.showToast(content);
}
</script>
在JavaScript寫一個方法 方法中直接剛纔在java代碼中定義的名字 調用"接口"類中的方法