-
methodName:是指Javascript中的方法
-
data:是指传入的数据。
在实际使用时重要注意问题
- Android 4.2以后要加注释语句@JavascriptInterface
在Android 4.2之前向webview注入的对象所暴露的接口没有注释语句@JavascriptInterface,而4.2及以后的则多了注释语句@JavascriptInterface
经过查官方文档所知,因为这个接口允许JavaScript 控制宿主应用程序,这是个很强大的特性,但同时,在4.2的版本前存在重大安全隐患,因为JavaScript 可以使用反射访问注入webview的java对象的public fields,在一个包含不信任内容的WebView中使用这个方法,会允许攻击者去篡改宿主应用程序,使用宿主应用程序的权限执行java代码。因此4.2以后,任何为JS暴露的接口,都需要加.
- 在Android 较高版本中调用JavaScript 中方法的语句要在线程中运行。
// 调用javascript中的show()方法
mHandler.post(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(“javascript:show('” + json + “')”);
}
});
示例代码:
html 代码:
刷新
Java代码:
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.web_view);
mWebView.loadUrl(“file:///android_asset/index.html”);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JSObject(),“contact”);
}
public class JSObject{
@JavascriptInterface
public void call(String phone){
Log.e(“phone”, “phone---->” + phone);
}
@JavascriptInterface
public void showContacts(){
try {
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put(“name”, “zhangsan”);
jsonObject.put(“amount”, “50”);
jsonObject.put(“phone”, “123465798”);
jsonArray.put(jsonObject);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put(“name”, “lisi”);
jsonObject1.put(“amount”, “48”);
jsonObject1.put(“phone”, “987456123”);
jsonArray.put(jsonObject1);
final String json = jsonArray.toString();
// 调用javascript中的show()方法
mHandler.post(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(“javascript:show('” + json + “')”);
最后
看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面
小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>
针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺
全都是一丢一丢的收集整理纯手打出来的
更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~
,可以瞬间查漏补缺
[外链图片转存中…(img-JE255SJU-1723558523392)]
全都是一丢一丢的收集整理纯手打出来的
更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~
[外链图片转存中…(img-ZeGJ7HzA-1723558523392)]
[外链图片转存中…(img-APjHHPk2-1723558523392)]