Android傳遞參數(shù)給webView的h5頁(yè)面3種方法
1.最簡(jiǎn)單的方式是通過(guò)URL參數(shù)將數(shù)據(jù)傳遞給H5頁(yè)面
Android可以通過(guò)WebView的loadUrl()方法加載帶有參數(shù)的URL,H5頁(yè)面可以通過(guò)解析URL來(lái)獲取參數(shù)值。
首先,在Android端構(gòu)造帶有參數(shù)的URL,然后加載該URL到WebView中:
WebView webView = findViewById(R.id.webView); String param1 = "value1"; String param2 = "value2"; String url = " + param1 + "¶m2=" + param2; webView.loadUrl(url);
在H5頁(yè)面中,可以通過(guò)解析URL獲取參數(shù)值:
function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } var param1 = getParameterByName('param1'); var param2 = getParameterByName('param2');
2.使用JavascriptInterface傳遞參數(shù),即H5頁(yè)面調(diào)用Android的方法
通過(guò)JavascriptInterface在Android端和H5頁(yè)面之間建立橋梁,實(shí)現(xiàn)雙向通信,即通過(guò)addJavascriptInterface()方法將一個(gè)Java對(duì)象注入到WebView中,H5頁(yè)面可以通過(guò)該對(duì)象調(diào)用Android端的方法獲取參數(shù)值。
1.自定義一個(gè)MyJavascriptInterface類(lèi),并且在類(lèi)中實(shí)現(xiàn)接受到消息之后的操作和要給h5傳遞的數(shù)據(jù)。
2.創(chuàng)建MyJavascriptInterface類(lèi)對(duì)象,將對(duì)象傳給webView.addJavascriptInterface(myJavascriptInterface, “Android”)。
public class MyJavascriptInterface { @JavascriptInterface public String sendData(string str) { //處理從h5頁(yè)面參數(shù)獲取到的數(shù)據(jù) } @JavascriptInterface public String getDeviceInfo() { //h5頁(yè)面調(diào)用此方法即可獲取到String 類(lèi)型的數(shù)據(jù) return stationPoints; } @JavascriptInterface public String getAllDefect() { //給h5發(fā)送復(fù)雜數(shù)據(jù)用Gson return new Gson().toJson(report.getAppDefectDtos()); } } WebView webView = findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); MyJavascriptInterface myJavascriptInterface = new MyJavascriptInterface(); webView.addJavascriptInterface(myJavascriptInterface, "Android"); webView.loadUrl()
在h5頁(yè)面中可以調(diào)用Android給的接口:
//發(fā)簡(jiǎn)單數(shù)據(jù) function sendData(str){ Android.sendData(str) } //h5收數(shù)據(jù) var deviceInfo = JSON.parse(window.android.getDeviceInfo()); //給h5收復(fù)雜數(shù)據(jù)用json let JsondefectData = JSON.parse(defectData);
3.使用WebView的evaluateJavascript方法傳遞參數(shù)即Android調(diào)用h5的方法
在Android端直接執(zhí)行JavaScript代碼,并傳遞參數(shù)給H5頁(yè)面。
Android調(diào)用了h5的callJS()方法,然后收到了一個(gè)返回值(此處的callJS方法也可攜帶參數(shù)進(jìn)行交互)
// 假設(shè)你有一個(gè)參數(shù)叫做 paramValue String paramValue = "你的參數(shù)值"; // 確保參數(shù)值被正確轉(zhuǎn)義,特別是如果它包含特殊字符或引號(hào) // 在這個(gè)例子中,我們只是簡(jiǎn)單地將它用單引號(hào)括起來(lái),但在實(shí)際情況中可能需要更復(fù)雜的轉(zhuǎn)義 String javaScriptCode = "javascript:callJS('" + paramValue.replace("'", "\\'") + "');"; mWebView.evaluateJavascript(javaScriptCode, new ValueCallback<String>() { @Override public void onReceiveValue(String value) { // 此處為 js 返回的結(jié)果 Log.d("WebView", "Received value from JavaScript: " + value); } });
在H5頁(yè)面中,可以定義一個(gè)receiveParams()函數(shù)來(lái)接收參數(shù):
function callJS(param) { // 在這里使用 param 參數(shù) console.log("Received parameter from Android: " + param); // ...其他代碼... }
總結(jié)
到此這篇關(guān)于Android傳遞參數(shù)給webView的h5頁(yè)面的文章就介紹到這了,更多相關(guān)Android傳遞參數(shù)給h5頁(yè)面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android中EditText光標(biāo)的顯示與隱藏方法
這篇文章主要給大家介紹了關(guān)于Android中EditText光標(biāo)的顯示與隱藏以及Android之第一次不顯示EditText光標(biāo)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11Android模擬器"Failed To Allocate memory 8"錯(cuò)誤如何解決
這篇文章主要介紹了Android模擬器"Failed To Allocate memory 8"錯(cuò)誤如何解決的相關(guān)資料,需要的朋友可以參考下2017-03-03FragmentStatePagerAdapter保存恢復(fù)下拉刷新Fragment內(nèi)存數(shù)據(jù)
這篇文章主要為大家介紹了FragmentStatePagerAdapter保存恢復(fù)下拉刷新Fragment內(nèi)存數(shù)據(jù)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Android NDK開(kāi)發(fā)(C語(yǔ)言--動(dòng)態(tài)內(nèi)存分配)
這篇文章主要介紹了Android NDK開(kāi)發(fā) C語(yǔ)言--動(dòng)態(tài)內(nèi)存分配2021-12-12Android SurfaceView運(yùn)行機(jī)制剖析--處理切換到后臺(tái)再重新進(jìn)入程序時(shí)的異常
本文主要介紹Android SurfaceView運(yùn)行機(jī)制,這里整理了詳細(xì)的資料來(lái)講解SurfaceView的運(yùn)行原理,并附示例代碼參考,有需要的小伙伴可以參考下2016-08-08Android Lock鎖實(shí)現(xiàn)原理詳細(xì)分析
這篇文章主要介紹了Android Lock鎖實(shí)現(xiàn)原理,Lock接口的實(shí)現(xiàn)類(lèi)提供了比使用synchronized關(guān)鍵字更加靈活和廣泛的鎖定對(duì)象操作,而且是以面向?qū)ο蟮姆绞竭M(jìn)行對(duì)象加鎖2023-02-02Android線(xiàn)程間通信 Handler使用詳解
這篇文章主要為大家介紹了Android線(xiàn)程間通信Handler使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Android下拉列表選項(xiàng)框及指示箭頭動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android下拉列表選項(xiàng)框,及指示箭頭動(dòng)畫(huà)的制作代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07