Android傳遞參數(shù)給webView的h5頁面3種方法
1.最簡單的方式是通過URL參數(shù)將數(shù)據(jù)傳遞給H5頁面
Android可以通過WebView的loadUrl()方法加載帶有參數(shù)的URL,H5頁面可以通過解析URL來獲取參數(shù)值。
首先,在Android端構造帶有參數(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頁面中,可以通過解析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頁面調用Android的方法
通過JavascriptInterface在Android端和H5頁面之間建立橋梁,實現(xiàn)雙向通信,即通過addJavascriptInterface()方法將一個Java對象注入到WebView中,H5頁面可以通過該對象調用Android端的方法獲取參數(shù)值。
1.自定義一個MyJavascriptInterface類,并且在類中實現(xiàn)接受到消息之后的操作和要給h5傳遞的數(shù)據(jù)。
2.創(chuàng)建MyJavascriptInterface類對象,將對象傳給webView.addJavascriptInterface(myJavascriptInterface, “Android”)。
public class MyJavascriptInterface {
@JavascriptInterface
public String sendData(string str) {
//處理從h5頁面參數(shù)獲取到的數(shù)據(jù)
}
@JavascriptInterface
public String getDeviceInfo() {
//h5頁面調用此方法即可獲取到String 類型的數(shù)據(jù)
return stationPoints;
}
@JavascriptInterface
public String getAllDefect() {
//給h5發(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頁面中可以調用Android給的接口:
//發(fā)簡單數(shù)據(jù)
function sendData(str){
Android.sendData(str)
}
//h5收數(shù)據(jù)
var deviceInfo = JSON.parse(window.android.getDeviceInfo());
//給h5收復雜數(shù)據(jù)用json
let JsondefectData = JSON.parse(defectData);
3.使用WebView的evaluateJavascript方法傳遞參數(shù)即Android調用h5的方法
在Android端直接執(zhí)行JavaScript代碼,并傳遞參數(shù)給H5頁面。
Android調用了h5的callJS()方法,然后收到了一個返回值(此處的callJS方法也可攜帶參數(shù)進行交互)
// 假設你有一個參數(shù)叫做 paramValue
String paramValue = "你的參數(shù)值";
// 確保參數(shù)值被正確轉義,特別是如果它包含特殊字符或引號
// 在這個例子中,我們只是簡單地將它用單引號括起來,但在實際情況中可能需要更復雜的轉義
String javaScriptCode = "javascript:callJS('" + paramValue.replace("'", "\\'") + "');";
mWebView.evaluateJavascript(javaScriptCode, new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
// 此處為 js 返回的結果
Log.d("WebView", "Received value from JavaScript: " + value);
}
});
在H5頁面中,可以定義一個receiveParams()函數(shù)來接收參數(shù):
function callJS(param) {
// 在這里使用 param 參數(shù)
console.log("Received parameter from Android: " + param);
// ...其他代碼...
}總結
到此這篇關于Android傳遞參數(shù)給webView的h5頁面的文章就介紹到這了,更多相關Android傳遞參數(shù)給h5頁面內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android使用MediaCodec將攝像頭采集的視頻編碼為h264
這篇文章主要為大家詳細介紹了Android使用MediaCodec將攝像頭采集的視頻編碼為h264,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10
Android控件ViewFlipper仿淘寶頭條垂直滾動廣告條
這篇文章主要為大家詳細介紹了Android控件ViewFlipper仿淘寶頭條垂直滾動廣告條,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Flutter?Getx中的put和lazyPut函數(shù)使用案例解析
這篇文章主要為大家介紹了Flutter?Getx中的put和lazyPut函數(shù)使用案例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
Android 線程之自定義帶消息循環(huán)Looper的實例
這篇文章主要介紹了Android 線程之自定義帶消息循環(huán)Looper的實例的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10

