WebView交互架构项目实战(二):JS与Java交互

  • 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 代码:
Insert title here
姓名存款电话

刷新

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框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

image

针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺

image

全都是一丢一丢的收集整理纯手打出来的

更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

image

image
,可以瞬间查漏补缺

[外链图片转存中…(img-JE255SJU-1723558523392)]

全都是一丢一丢的收集整理纯手打出来的

更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

[外链图片转存中…(img-ZeGJ7HzA-1723558523392)]

[外链图片转存中…(img-APjHHPk2-1723558523392)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值