當前位置:首頁 » 編程語言 » java數組js

java數組js

發布時間: 2024-12-15 16:10:07

Ⅰ 如何在WebView中通過java傳遞給JS數組

1.整體思路:
js調用java
首先將js代碼注入到webview的頁面中,然後通過修改window.location.href來向java傳遞參數,java端通過監聽頁面url的改變來識別js端傳遞的參數.然後再經解析數據實現java方法的調用.
java調用js
java通過webView.loadUrl("JavaScript:"+jsCode);來實現js代碼的調用
2. java調用js的實現
java調用js的方法,相當簡單:
String jsCode = "(function(){ /*js code here*/ })()";
webview.loadUrl("javascript:" + jsCode);

注意:要把js代碼用自執行函數包裹起來
利用這種方法可以把任意代碼注入到頁面中
注意: 當頁面剛載入時就需要把 2.1中的js代碼注入到頁面中,但是有時會出現頁面載入完成,但是注入的代碼沒有執行的現象,應該是因為js沒有及時載入而頁面先載入完成。要解決這個問題就需要在頁面載入完成時觸發一個事件比如jsBridgeReady,js端通過監聽jsBridgeReady事件來調用java方法。那麼總體流程如下:
載入頁面->注入js代碼->頁面載入完成->觸發js注入完成事件
代碼:
在BridgeWebClient中添加邏輯: 1,載入頁面時注入js代碼: 2,載入完成後觸發載入完成事件
@Override
public void onLoadResource(WebView view, String url) {
// 注入橋接代碼
// 這里通過讀取js文件獲得js代碼
if (mFileName != null) {
view.loadUrl(mBridge.createBaseJs(mContext, mFileName));
}
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 觸發注入完成事件,用於解決 注入的代碼沒有及時載入成功導致無法調用的問題
view.loadUrl("(function(){if(window.UAPPJSBridgeReady){window.UAPPJSBridgeReady();}})()");
}

如果你也想從文件讀取js代碼,記得把讀取的代碼壓縮一下,把注釋和換行刪除,不然很可能會報錯
js端調用java注入的代碼:
//判斷代碼是否注入完成
if(window.UAPPJSBridge){
//調用注入的方法
window.UAPPJSBridge.wxshare(message,success,error);
}else{
//監聽注入完成的事件
window.onBridgeLoaded=function(){
if(window.UAPPJSBridge){
window.UAPPJSBridge.wxshare(message,success,error);
}
}
}

熱點內容
pc游戲編程人機博弈源碼 發布:2025-03-13 04:51:45 瀏覽:603
手機原生配置低怎麼玩流暢 發布:2025-03-13 04:35:31 瀏覽:735
分線器安卓供電口有什麼用 發布:2025-03-13 04:19:54 瀏覽:136
埠訪問關系 發布:2025-03-13 03:49:50 瀏覽:789
運用零基預演算法 發布:2025-03-13 03:45:30 瀏覽:791
安卓伺服器搭建web 發布:2025-03-13 03:40:26 瀏覽:317
銅板演算法 發布:2025-03-13 03:40:25 瀏覽:621
ins怎麼保存圖片安卓 發布:2025-03-13 03:38:14 瀏覽:214
什麼資料庫快 發布:2025-03-13 03:34:38 瀏覽:52
喋血復仇加入伺服器失敗怎麼回事 發布:2025-03-13 03:33:37 瀏覽:698