Android混合开发js与native交互两种方式

html向native传递数据:重点内容

一、使用window.prompt方式:

首先在html页面添加prompt执行入口:

prompt test

然后native中的WebChromeClient重写onJsPrompt方法(主要可以给html返回数据,如果没有返回数据使用onJsAlert,onJsConsole也可以实现交互)添加:
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
result.confirm(“message from activity”);//设置返回数据
//2. html调用onprompt(),native中的onJsPrompt被回调 (一般常用onJsPrompt)
//这里传进来的参数就是从js的window.prompt(uri, value)传过来的参数
return true;
}

注:使用这种方式需要native中的WebView调用:mWeb.getSettings().setJavaScriptEnabled(true);

二、使用链接方式:
自定义协议如:
my://test/detail?productid=12345;
可以定义为跳转到详情处也可以类似于http的get方法传递参数

html中:
链接交互测试

native中重写WebViewClient中的shouldOverrideUrlLoading(WebView view, String url):

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (TextUtils.isEmpty(url)) {
return false;
}
if (url.startsWith(“my:”)) {//根据自定义自定义协议跳转到native页面或者不处理,
Toast.makeText(MainActivity.this, url, Toast.LENGTH_LONG).show();

// 1. 自定义协议,从h5 到native,不过不能返回东西到h5
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}

以上两种就是html给native传数据了。
代码地址:https://github.com/divaid/HybridTest

native调用html方法:
通过webView.loadUrl(“javascript:方法名”); 来调用js中的方法。

// 无参数调用
contentWebView.loadUrl(“javascript:javacalljs()”);
// 传递参数调用
contentWebView.loadUrl(“javascript:javacalljswith(” + “’这里是调用js方法’” + “)”);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Web开发中,JSNative交互是指通过JavaScript(JS)代码和本地代码进行相互通信的过程。JS是一种脚本语言,在浏览器中执行,而Native是指底层本地代码,如Android的Java或iOS的Objective-C/Swift。 JSNative交互的目的是为了在Web应用程序中获得更强大的功能和更好的用户体验。通过JSNative交互,可以实现以下功能: 1. 调用Native功能:JS可以通过与Native进行通信,调用本地功能,例如访问设备的传感器、获取设备信息、发送本地推送等。这样,Web应用程序就可以更好地与设备硬件和本地特性进行交互。 2. 获取Native数据:JS可以向Native请求数据,例如获取本地数据库的数据、获取设备的位置信息等。通过这种方式,Web应用程序可以使用本地的数据,实现更为复杂和个性化的功能。 3. 更新Web页面:Native可以通过调用JS的代码来更新Web页面的内容,例如在Native端接收到新的数据时,可以通过JS将数据更新到Web页面上,实现实时的页面刷新。 为了实现JSNative交互,通常有以下几种方式: 1. 使用WebView提供的接口:在移动应用中,使用WebView作为嵌入式浏览器可以实现JSNative交互。通过WebView提供的接口,可以在JSNative之间进行消息传递和函数调用。 2. 使用JavaScriptBridge:JavaScriptBridge是一种将JSNative进行桥接的技术。通过在Native代码中注入JavaScriptBridge对象,并在JS代码中引用相关的Native方法和属性,可以实现JSNative的相互调用。 3. 使用消息机制:在一些特定的平台上,还可以通过消息机制实现JSNative之间的通信。例如,Android平台可以使用JavaScriptInterface来定义JS可以调用的Native方法,而iOS平台可以使用WKWebView提供的消息机制进行JSNative交互。 总结来说,JSNative交互是为了实现Web应用程序与本地功能和数据的交互,通过使用WebView接口、JavaScriptBridge或消息机制,可以实现JSNative的相互调用和通信。这样一来,Web应用程序就能获得更多的功能和更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值