Android 如何进行js交互
16lz
2021-01-23
学习android肯定会涉及到js交互的问题,没有做过这方面项目的android人员或者android学习者可能在面对这个问题的时候有些萌逼,因为本人公司大量的android都涉及到和H5的交互式开发,所以总结一下js的使用方法。
以webview为例,因为现在Crosswalk的使用也非常流行,webview会涉及到很麻烦的适配问题,以及硬件加速什么的,Crosswalk则没有适配方面的压力,但是会导致打包非常大,再者Crosswalk还有一些cpu不支持,两者各有千秋吧。
开始正题:
一,H5调用Android的方法:
在设置webview时,必须要设置如下
WebSettings settings = webView.getSettings();webView.addJavascriptInterface(this, "android");settings.setJavaScriptEnabled(true);
this表示在本类中书写android方法,防止代码混乱也可以在内部类中写,”android“表示这是android的方法,区别于ios
wvContent.addJavascriptInterface(new WebViewActivity(), "android");
表示方法会写在WebViewActivity.class内部类中,android方法的书写
@JavascriptInterface public void toUserInfoActivity() { RouteManager.getInstance().toUserInfoActivity(MainActivity.this);}
这里只是简短的页面跳转功能,这里的关键就是@JavascriptInterface,如果没有写的话,方法就不会被识别
H5是如何调用的呢?请看下面代码
function goback(){ var browser = device(); if (browser.versions.android) { window.android.goBack(); }else if(browser.versions.ios || browser.versions.iPhone || browser.versions.iPad){ window.location = 'ios://webGoBack'; }}
这里就能很清楚的看到调用的是android的goback()方法。
二,android调用H5的方法
交互式开发也需要经常去调用方法,这个很简单,首先说一下调用必须是在web页面去调用,android原生界面是调不到的。
调用webview的loadurl()方法就行了
if (flag.equals("0")) { webView.reload(); } else if (flag.equals("1")) { webView.loadUrl("javascript:uploadImgSrc('" + id + "','" + imageurl + "')"); } else if (flag.equals("2")) { webView.loadUrl("javascript:uploadAuditImg('" + imageurl + "')"); }
这是我项目中的一段交互代码,来分析一下,webview调用loadurl()方法,里面必须是“javascript:方法名(‘“+参数+”’)”这种格式才行,嗯很简单吧,格式是调用的关键,嗯讲的很浅显,希望能有所帮助。
更多相关文章
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
- 经典Android系统源代码
- Android防止内存溢出浅析/应用自动更新功能的代码实现
- android待机详细结合代码分析(二)
- 用fastboot大刷Android ~换个方法刷android手机
- android与linux内核对比--《Android系统源代码情景分析》试读
- [Android]ScrollView和ListView套用冲突的解决方法
- Android页面去掉标题全屏的方法-第一次用安卓试试看