當前位置:首頁 » 編程語言 » 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);
}
}
}

熱點內容
伺服器系統盤一般做什麼陣列 發布:2025-07-17 11:16:05 瀏覽:362
如何用c語音實現放射密碼 發布:2025-07-17 11:13:03 瀏覽:734
lol腳本2017 發布:2025-07-17 10:52:18 瀏覽:826
編譯條件有哪些 發布:2025-07-17 10:42:51 瀏覽:333
apache設置靜態內容緩存時間 發布:2025-07-17 10:32:32 瀏覽:294
蘋果6不能緩存的視頻 發布:2025-07-17 10:31:44 瀏覽:404
如何把文件夾共享 發布:2025-07-17 10:23:49 瀏覽:298
linux查看命令大全 發布:2025-07-17 10:21:24 瀏覽:976
安卓應用程序和蘋果手機哪個好 發布:2025-07-17 10:20:43 瀏覽:411
數據結構c語言試卷 發布:2025-07-17 10:12:09 瀏覽:380