布局文件中的申明
<com.example.safeappdemo.webview.SafeWebView
android:id="@+id/my_webview"
android:layout_width="match_parent"
android:layout_height="400dp" >
</com.example.safeappdemo.webview.SafeWebView>
webView.registerHandler("submitFromWeb");
public interface IMethodInvokeInterface {
String dispatch(String data);
}
webView.init(this, invokeInterface);
webView.loadUrl("http://www.baidu.com|file:///android_asset/javascript.html");
WebViewJavascriptBridge.callHandler('submitFromWeb', {'param': str1}, function(responseData) {
document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
});
1) 当前webview使用file协议时,只允许加载本地私有目录:/android_asset和android_res这两个目录下的html文件;
2) 安全webview对于可以使用的JS交互接口的url进行了限制,只允许百度域下的url调用,业务方需要根据当前业务场景进行修改。
3)关于在javascript中注册handler,java中调用的方式,可以参考JSBridge中的使用说明,安全webview也支持。https://github.com/lzyzsd/JsBridge.