Android中的Java與JavaScript方法互調


在Android開發中常常用到WebView,就會涉及到安卓的java代碼和網頁中的javaScript方法的相互調用.


準備工作

  1. 最基本的要得到WebView對象

        @Bind(R.id.webview)
        WebView webview;
    
        WebView webview= (WebView) findViewById(R.id.webview);

    兩種方法

    1. 使用ButterKnife插件 註解
    2. 普通findViewById
  2. 設置默認的文本編碼方式爲utf-8

    webview.getSettings().setDefaultTextEncodingName("utf-8");
  3. 允許執行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代碼中定義的名字 調用"接口"類中的方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章