- 注册JS调用的方法(H5调用WebView)
//注意如果出现undefined 接受的参数1、是没有标注 @JavascriptInterface
// 2、是H5 没有调用window.registerName.method(content) 注意window.
public class ClassName {
@JavascriptInterface
public void method(final String content) {
runOnUiThread(new Runnable() {
}
}
//注册类名字
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new className(),"registerName");
- 编写调用JS的方法(Webview调用H5并获得返回值)
//method :JS 提供的方法名字
// webView.loadUrl("javascript:stop()"); 19版本之前
//19(包括19版本)之后,需要兼容性。
webView.evaluateJavascript(("javascript:method()"), new ValueCallback<String>() {
@Override
public void onReceiveValue(String responseJson) {
});
*H5需要保存数据持久化(比如需要用户登录信息)
//这个是打开本地持久化
webView.getSettings().setDomStorageEnabled(true);
//还有一种是加载https的URL时在5.0以上加载不了,5.0以下可以加载,这种情况可能是网页中存在非https得资源,在5.0以上是默认关闭,需要设置,
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
- 与后台进行交互的数据,一般采用JSON ,确保H5返回的格式正确。
- android 这边不支持H5原生Alert的调用,所以需要H5自己写的组建,最好不要这边拦截处理Alert事件,因为这样就失去了H5移动端开发的意义。
网友评论