Android WebView中的JavaScript和java代码的交互
来源:互联网 发布:程序员的思维修炼听书 编辑:程序博客网 时间:2024/06/10 06:29
绑定JavaScript与Android代码
当你为你的Android应用中的WebView专门开发一个网页应用时,你可以创建你的JavaScript代码和你的客户端的Android代码之间的接口。
比如,你可以用JavaScript代码调用Android代码中的方法,来展现一个对话框之类,而不是使用alert()方法(JS中的对话框方法)。
在JS和Android代码间绑定一个新的接口,需要调用 addJavascriptInterface()
方法。
方法参数传入一个Java对象实例和一个字符串,该字符串是一个名字(interface name,注意此接口不是通常所说的那个用来实现的接口,而是传入的这个对象在JS中的别名),在JS代码中用此名字调用该Java对象的方法。
注意这个方法可以让JS代码控制宿主程序,这是一个非常有力的特性,但是同时也存在一些安全问题,因为进一步JS代码可以通过反射访问到注入对象的公有域。攻击者可能会在HTML和JavaScript中包含了有威胁性的代码。
所以Android 4.1,API 17,也就是JELLY_BEAN
开始,只有被JavascriptInterface 注解标识的公有方法可以被JS代码访问。
另外,因为JS代码和Java对象在这个WebView所私有的后台线程交互,所以还需要注意线程安全性问题。
注意,与JS代码绑定的的这个Java对象运行在另一个线程中,与创建它的线程不是一个线程。
注意,这个Java对象的域是不可访问的。
WebView webView = (WebView) findViewById(R.id.webview);webView.addJavascriptInterface(new WebAppInterface(this), "Android");
给这个对象起的别名叫“Android”。
这个就创立了一个接口名,叫“Android”,运行在WebView中的JS代码可以通过这个名字调用WebAppInterface类中的showToast()方法:
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /><script type="text/javascript"> function showAndroidToast(toast) { Android.showToast(toast); }</script>
- Android WebView中的JavaScript和java代码的交互
- Android WebView Java和JavaScript的交互
- Android Webview Java和Javascript安全交互
- Android Webview Java和Javascript安全交互
- Android Webview Java和Javascript安全交互
- Android WebView Java与JavaScript的交互
- Android WebView和JavaScript之间的交互
- android 的webView加载h5,和h5的交互(java和JavaScript的交互)
- 使用WebView中的Javascript和本地代码交互
- Android中WebView的JavaScript代码和本地代码交互的三种方式
- Android中WebView的JavaScript代码和本地代码交互的三种方式
- Android中WebView的JavaScript代码和本地代码交互的三种方式
- Android WebView和JavaScript交互
- Android中WebView载入本地HTML代码并实现Java与JavaScript交互的例子
- android 中 java 和 javascript 通过webview 交互
- Android WebView与JavaScript代码交互
- Android 与WebView中的js代码的交互记录
- Android中webview跟JAVASCRIPT中的交互
- 【OpenCV】灰度图像阈值化分割常见方法总结及VC代码
- LeetCode-Sort Colors
- AndroidUI设计之ViewPaper详解
- iOS系统恢复固件遭遇3194错误解决办法
- 改版了呢,好期待啊
- Android WebView中的JavaScript和java代码的交互
- 高人对libsvm的经典总结
- [转载]Oracle EBS之Oracle Forms中的“WHEN-LEAVE-RECORD”触发器
- iframe实用操作
- 无项无权图的基本操作
- spark Parallel Computation log
- 谷歌招聘新职员的五大标准
- PHP在arm板子上的移植
- java Servlet和tomcat