Android传递参数给webView的h5页面3种方法

 更新时间:2024年08月14日 09:38:28   作者:月色月石  
最近几年随着h5的强势崛起,越来越多的公司运用h5开发或者采用h5与android的混合开发,这篇文章主要给大家介绍了关于Android传递参数给webView的h5页面的3种方法,需要的朋友可以参考下

1.最简单的方式是通过URL参数将数据传递给H5页面

Android可以通过WebView的loadUrl()方法加载带有参数的URL,H5页面可以通过解析URL来获取参数值。
首先,在Android端构造带有参数的URL,然后加载该URL到WebView中:

    WebView webView = findViewById(R.id.webView); 
    String param1 = "value1";
    String param2 = "value2";
    String url = " + param1 + "&param2=" + param2;
    webView.loadUrl(url);

在H5页面中,可以通过解析URL获取参数值:

    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传递参数,即H5页面调用Android的方法

通过JavascriptInterface在Android端和H5页面之间建立桥梁,实现双向通信,即通过addJavascriptInterface()方法将一个Java对象注入到WebView中,H5页面可以通过该对象调用Android端的方法获取参数值。

1.自定义一个MyJavascriptInterface类,并且在类中实现接受到消息之后的操作和要给h5传递的数据。
2.创建MyJavascriptInterface类对象,将对象传给webView.addJavascriptInterface(myJavascriptInterface, “Android”)。

   public class MyJavascriptInterface {
        @JavascriptInterface
        public String sendData(string str) {
           //处理从h5页面参数获取到的数据
        }

        @JavascriptInterface
        public String getDeviceInfo() {
        	//h5页面调用此方法即可获取到String 类型的数据
           return stationPoints;
        } 

         @JavascriptInterface
         public String getAllDefect() {
              //给h5发送复杂数据用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给的接口:

  //发简单数据
  function sendData(str){
     Android.sendData(str)
  }

  //h5收数据
  var deviceInfo = JSON.parse(window.android.getDeviceInfo());
  
  //给h5收复杂数据用json
  let JsondefectData = JSON.parse(defectData);

3.使用WebView的evaluateJavascript方法传递参数即Android调用h5的方法

在Android端直接执行JavaScript代码,并传递参数给H5页面。

Android调用了h5的callJS()方法,然后收到了一个返回值(此处的callJS方法也可携带参数进行交互)

  // 假设你有一个参数叫做 paramValue  
String paramValue = "你的参数值";  
  
// 确保参数值被正确转义,特别是如果它包含特殊字符或引号  
// 在这个例子中,我们只是简单地将它用单引号括起来,但在实际情况中可能需要更复杂的转义  
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()函数来接收参数:

  function callJS(param) {  
    // 在这里使用 param 参数  
    console.log("Received parameter from Android: " + param);  
    // ...其他代码...  
}

总结 

到此这篇关于Android传递参数给webView的h5页面的文章就介绍到这了,更多相关Android传递参数给h5页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android 画中画模式的实现示例

    Android 画中画模式的实现示例

    这篇文章主要介绍了Android 画中画模式的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Android自定义水波纹动画Layout实例代码

    Android自定义水波纹动画Layout实例代码

    这篇文章主要介绍了Android自定义水波纹动画Layout的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • Android使用MediaCodec将摄像头采集的视频编码为h264

    Android使用MediaCodec将摄像头采集的视频编码为h264

    这篇文章主要为大家详细介绍了Android使用MediaCodec将摄像头采集的视频编码为h264,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Android控件ViewFlipper仿淘宝头条垂直滚动广告条

    Android控件ViewFlipper仿淘宝头条垂直滚动广告条

    这篇文章主要为大家详细介绍了Android控件ViewFlipper仿淘宝头条垂直滚动广告条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Flutter Getx中的put和lazyPut函数使用案例解析

    Flutter Getx中的put和lazyPut函数使用案例解析

    这篇文章主要为大家介绍了Flutter Getx中的put和lazyPut函数使用案例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Android 线程之自定义带消息循环Looper的实例

    Android 线程之自定义带消息循环Looper的实例

    这篇文章主要介绍了Android 线程之自定义带消息循环Looper的实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • Flutter质感设计之进度条

    Flutter质感设计之进度条

    这篇文章主要为大家详细介绍了Flutter质感设计之进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android自定义商品购买数量加减控件

    Android自定义商品购买数量加减控件

    这篇文章主要为大家详细介绍了Android自定义商品购买数量加减控件的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android测试中Appium的一些错误解决技巧

    Android测试中Appium的一些错误解决技巧

    今天小编就为大家分享一篇关于Android测试中Appium的一些错误解决技巧的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Android中的JSON详细总结

    Android中的JSON详细总结

    一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换
    2013-01-01

最新评论