Android与JS之间跨平台异步调用实例详解
16lz
2021-01-23
Android与JS之间跨平台异步调用
为什么突然要搞这个问题呢?
在开发浏览器的时候遇到这个狗血的问题,花了将近1天的时间才想到这个解决方案,Android与JavaScirpt互调。
因为接口是抓取的别人的,所以出现了JS跨域问题,Android闪亮登场搞定了。
GIF动画演示
WebView相关设置
WebSettings mWebSettings = getSettings();mWebSettings.setDefaultTextEncodingName("UTF-8");//设置默认的显示编码mWebSettings.setJavaScriptEnabled(true);//调用JS方法.安卓版本大于17,加上注解 @JavascriptInterface
直接放大招->贴代码
Android
addJavascriptInterface(new Object() { @JavascriptInterface public void toastMessage(final String url, final int type, final int dir) { L.e("url = " + url + " type = " + type + " dir = " + dir); APIWrapper.getInstance() .getLenovoWord(url) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new RxSubscriber() { @Override public void _onNext(ResponseBody responseBody) { try { String data = responseBody.string(); L.e("data = " + data); loadUrl("javascript:ResCompleted(" + data + "," + type + "," + dir + ")"); } catch (IOException e) { e.printStackTrace(); } } @Override public void _onError(String msg) { loadUrl("javascript:ResCompleted(" + msg + ")"); } }); } }, "Android");
Html
Js调用Android代码
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
更多相关文章
- Android 利用JNI调用Android Java代码函数
- Android浮动窗口实现原理及代码实例
- ubuntu下载android源代码
- Android 权限控制代码分析
- 关于Android使用proguard进行代码混淆