webview上android原生可以获取到js传递的数据,并获取其方法,在往JS传递数据时js方却接收不到。
需求是拦截js方法的同时再给js传递一个token数据。
最终解决方案是1.
@JavascriptInterface
public void triggerPostAuth(String c) {
ToastUtil.showLongToast(c);
String nzothToken = SpUtils.getInstance().getString("nzothToken", "");
runOnUiThread(new Runnable() {
@Override
public void run() {
LogUtils.e("callbackPostAuth:==="+"javascript:callbackPostAuth(" +"'"+nzothToken+"'" +")");
mWebView.loadUrl("javascript:callbackPostAuth('"+nzothToken+"')");
}
});}
第一点要注意的是接收到js传递的方法和参数要再传递给js参数时要在runOnuiThread 的里执行,否则是提不到js上的。
2.需要设置websetting。
//设置支持DomStorage
mWebView.getSettings().setDomStorageEnabled(true);
网上一些资料基本没有说到重点。
如果正巧解决你的焦头烂额,那就给个赞吧。
网友评论