Android代碼與JavaScript的互調(diào)

WebView控件最重要的應(yīng)用是與JavaScript的互調(diào)。在Android4.2之后與JavaScript的注入需要加入注解“@JavascriptInterface”。

一、Android端調(diào)用HTML中的JavaScript代碼

Android端只需要在初始化WebView控件時,開啟該控件對JavaScript的支持,然后先調(diào)用loadUrl()方法來加載HTML文件,接著再次調(diào)用該方法完成對JavaScript代碼的調(diào)用。接下來舉個例子,在一個名為test的HTML頁面中定義一個JavaScript方法,具體代碼如下:

fuction javaCallJs(){
    document.getElementById("content").innerHTML+="java調(diào)用了js函數(shù)";
}

在Android端初始化一個WebView控件并加載test.html文件,具體代碼如下:

private void initWebView(){
    mWebView.getSettings().setJavaScriptEnabled(true); //啟用了Javascript
    mWebView.load("file://android_asset/test.html"); //加載HTML文件
}

調(diào)用HTML頁面中的javacallJs()方法,具體代碼如下:

    mWebView.loadUrl("javascript:javaCallJs()");

二、Javascript調(diào)用Android端的代碼

首先為WebView控件綁定一個JavascriptInterface類,JavaScript腳本通過該類對Java代碼進行調(diào)用,定義一個JavascriptInterface類,具體代碼如下:

public class TestInterface {
    /**
    * 因為安全問題,在Android4.2以后(應(yīng)用的android:tragetSdkVersion數(shù)值為17+)
    * JS只能訪問帶有@JavascriptInterface注解的函數(shù)
    */
    @JavascriptInterface
    public void startFunction() {
            Toast.makeText(MainActivity.this,"Js調(diào)用了Java",Toast.LENGTH_SHORT).show();
        }
    }

在初始化WebView控件時需要綁定這個JavascriptInterface,具體代碼如下:

//在代碼中,TestInterface是實例化的對象,testInterface是這個對象在js中的別名
mWebView.addJavascriptInterface(new TestInterface(),"testInterface");

通過在綁定JavascriptInterface時設(shè)置的別名,可以使JavaScript調(diào)用Java代碼,HTML中的具體代碼如下:

<body>
    this is my html<br/>
    <a onclick="window.testInterface.startFunction()">點擊調(diào)用Java代碼</a><br/>
<body>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,422評論 25 708
  • WebView·開車指南 2016-08-31BugDev 北京市東城區(qū)首席Bug布道師開山之作,一整月交通事故血...
    53c021c38a1d閱讀 850評論 0 1
  • WebView·開車指南 目錄 WebView簡介 WebView基本使用 WebView常用方法 WebSett...
    小莊bb閱讀 3,551評論 3 25
  • Tips 由于WebView的用法實在太多,如果您只是想查詢某個功能的使用——建議Ctrl+F(Commad+F)...
    BugDev閱讀 7,805評論 11 109
  • 小王子一個人在沙漠里流浪了很久,然后,遇見了狐貍。 “什么是馴養(yǎng)呢?”小王子問。 狐貍說:“馴養(yǎng)就是你花費時間和耐...
    你好_王姑娘閱讀 714評論 0 0