23、JS呼叫Android原生程式碼方法
阿新 • • 發佈:2019-02-12
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以上 |
使用建議:兩種方法混合使用