Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。
16lz
2021-12-04
当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID; 大概就是点击H5界面携带参数跳转到Android原生界面;
好了,需求已经分析完毕了,Android只需要获取H5的点击事件和传递的参数;
来,上代码:
/启用支持javascriptWebSettings settings = webView.getSettings();settings.setJavaScriptEnabled(true);
Android4.2以上需要@JavascriptInterface注解,其目的是为了安全;
public class JavaScriptObject{ public JavaScriptObject(Activity activity) { } @JavascriptInterface public void setToken(String goodsId){ //goodsId就是商品的ID,这里拿到商品的ID后直接跳转到商品详情页,并把id传递过去 } @JavascriptInterface public void definedShare(String ShareJson){ }}
/**添加js接口,参数1是本地类名,参数2是标记;H5调用需要 "window.标记.类名中的方法名" 才能调用*/webView.addJavascriptInterface(new JavaScriptObject(this), "android");
到这里Android端需要写的就完成了;
这个是我截的图,可以看一下:
这里是H5需要写的代码:
调用原生setToken方法
----------------------------------------------------------------------------------------------------------------------------------
附:如果在Android端调用H5中的方法:
/* * Android调用H5中的方法 *///传固定字符串可以直接用单引号括起来 mWebView.loadUrl("javascript:alertMessage('哈哈')");//访问H5里带参数的方法,alertMessage(message)为H5里的方法 //当出入变量名时,需要用转义符隔开 String content="1016"; mWebView.loadUrl("javascript:alertMessage(\"" +content+ "\")" ); //Android调用有返回值js方法,安卓4.4以上才能用这个方法 mWebView.evaluateJavascript("11", new ValueCallback() { @Override public void onReceiveValue(String value) { Log.i(TAG, "js返回的结果为=" + value); } });
抽成方法:
private void callJS(String callback, String status) { if (TextUtils.isEmpty(status)) { if (AndroidUtils.isKitkat()) { mWebView.evaluateJavascript("javascript:" + callback + "()", null); } else { mWebView.loadUrl("javascript:" + callback + "()"); } } else { if (AndroidUtils.isKitkat()) { mWebView.evaluateJavascript("javascript:" + callback + "('" + status + "')", null); } else { mWebView.loadUrl("javascript:" + callback + "('" + status + "')"); } } }public static boolean isKitkat() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; }
更多相关文章
- Android(安卓)& Vibrator
- Unity—Android通讯
- Android(安卓)获取WIFI MAC地址的方法
- Android键盘自适应方法.
- Android常用资源总结
- Android(安卓)Handler机制8之消息的取出与消息的其他操作
- [Android][设置最小(大)宽高]
- android中activity全屏的方法
- Android(安卓)PinnedHeaderListView 详解