1. 程式人生 > >23、JS呼叫Android原生程式碼方法

23、JS呼叫Android原生程式碼方法

JS呼叫Android原生程式碼方法

1.   宣告@JavascriptInterface,進行物件對映

 

 

 

2.      使用WebViewClient.shouldOverrideUrlLoading函式,攔截URL

 

3.      使用WebChromeClient.onConsoleMessage函式

 

 

4.      使用WebChromeClient.onJsPrompt函式,攔截JS輸入框訊息

 

 

三種方法對比:

呼叫方式

優點

缺點

使用場景

@JavascriptInterface

方便簡潔

Android4.2以下存在漏洞問題

Android4.2以上相對簡單互調場景

shouldOverrideUrlLoading

不存在漏洞問題

使用複雜,需要進行協議的約束;從Native層往Web層傳遞值比較繁瑣

不需要返回值情況下的互調場景

onJsPrompt

不存在漏洞問題

使用複雜,需要進行協議的約束

能滿足大多數情況下的互調場景

Android呼叫JS原生程式碼方法

1.   Webview.loadUrl

 

 

2.   Webview.evaluateJavascript

a)        該方法的執行不會使頁面重新整理,loadUrl則會重新整理。

b)       Android 4.4 後才會使用。

 

方法對比:

呼叫方式

優點

缺點

使用場景

使用loadUrl

方便簡潔

效率低;獲取返回值麻煩

不需要獲取返回值,對效能要求較低時

使用evaluateJavascript

效率高

向下相容性差(僅Android 4.4 以上可用)

Android 4.4以上

使用建議:兩種方法混合使用