Android中Java和JavaScript交互


實現交互步驟:

  • WebView開啟JavaScript腳本執行
  • WebView設置供JavaScript調用的交互接口。
  • 客戶端和網頁端編寫調用對方的代碼。

js調用Java

  格式為:window.jsInterfaceName.methodName(parameterValues) 

Java(webView)調用JS

  格式為:webView.loadUrl(“javascript:methodName(parameterValues)”)

 

Android在4.4之前並沒有提供直接調用js函數並獲取值的方法,所以在此之前,常用的思路是 java調用js方法,js方法執行完畢,再次調用java代碼將值返回。

1.Java調用js代碼
String call = "javascript:sumToJava(1,2)";
webView.loadUrl(call);
2.js函數處理,並將結果通過調用java方法返回
function sumToJava(number1, number2){
       window.control.onSumResult(number1 + number2)
}
3.Java在回調方法中獲取js函數返回值
@JavascriptInterface
public void onSumResult(int result) {
  Log.i(LOGTAG, "onSumResult result=" + result);
}

 

Android在4.4之后使用evaluateJavascript即可。

function getGreetings() {
      return 1;
}

java代碼時用evaluateJavascript方法調用

private void testEvaluateJavascript(WebView webView) {
  webView.evaluateJavascript("getGreetings()", new ValueCallback<String>() {

  @Override
  public void onReceiveValue(String value) {
      Log.i(LOGTAG, "onReceiveValue value=" + value);
  }});
}

注意

  • 上面限定了結果返回結果為String,對於簡單的類型會嘗試轉換成字符串返回,對於復雜的數據類型,建議以字符串形式的json返回。
  • evaluateJavascript方法必須在UI線程(主線程)調用,因此onReceiveValue也執行在主線程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM