【第22期】观点:IT 行业加班,到底有没有价值?

android中java和JS互相调用,Web Console: Uncaught TypeError: Object [object Object] has no method

原创 2015年11月18日 11:29:11
在Android中写Hybird程序,需要JS和Android的方法互相调用,写好之后应用跑起来,发现Android调JS可以,但是JS代码调用Android的代码不行,报错如下:

Web Console: Uncaught TypeError: Object [object Object] has no method...

google一下后发现,4.2的版本前存在重大安全隐患,因为JavaScript 可以使用反射访问注入webview的java对象的public fields,在一个包含不信任内容的WebView中使用这个方法,会允许攻击者去篡改宿主应用程序,使用宿主应用程序的权限执行java代码。因此4.2以后,任何为JS暴露的接口,都需要加
@JavascriptInterface
所以解决方法就是:
       在你暴露给JS调用的方法前面加上@JavascriptInterface,导入android.webkit.JavascriptInterface这个包就行了。
这个是4.2之前的写法:
public class JSCallAndroid {
	private Context context;
	
	public JSCallAndroid(Context context) {
		this.context = context;
	}

	//暴露给JavaScropt的方法
	public void testJS(String msg) {
		AlertDialog.Builder builder = new AlertDialog.Builder(context);
		builder.setTitle("在JS中调用Android").setMessage("调用成功").create().show();
	}
}

这是4.2之后的写法
public class JSCallAndroid {
	private Context context;
	
	public JSCallAndroid(Context context) {
		this.context = context;
	}
	//暴露给JavaScript的方法
	@JavascriptInterface
	public void testJS(String msg) {
		AlertDialog.Builder builder = new AlertDialog.Builder(context);
		builder.setTitle("在JS中调用Android").setMessage("调用成功").create().show();
	}
}





版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android webview js 调用java方法报错"Uncaught TypeError: Object [object Object] has no method xx

webview开发,在Android4.4下js调用java方法报错"Uncaught TypeError: Object [object Object] has no method,同样的写法在4....

JavaScropt基础总结

1.什么是JavaScript? JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

我老师教的非常简洁的javascropt日历Js

日期             table { width:200px; background-color:Blue;}         .main {width:200px; height:3...

javascropt学习笔记1

《javascript捷径教程》 针对已有javascript经验基础 1.代码装载和解析,要调用的函数必须放在前面,第三方脚本尽量放在底部以减少等待时间。 Ch2 2.Web开发三层论,HTM...

ArcGIS For JavaScropt Geocoder————(十六)

描述: 此示例演示如何使用Geocoder的小工具,以简化的过程中,发现在地图上的位置。地理搜索框添加到应用程序   在线演示:http://help.arcgis.com/en/webapi/jav...

10个基于JavaScript的机器学习案例

在过去的几年里,机器学习的开发库增长很快,可用性也变得越来越可靠,而且没有减慢的趋势。一直以来Python作为机器学习的主力语言,现在神经网络可以应用任何语言了,包括JavaScript! we...

javascript基础学习-语法学习(三)

上两篇关于javascript的博客简单介绍了一下javascript的变量,运算符和基本语句,下面接着介绍. 1.javascript中数组的用法.     ArrayTest va...

JavaScript——DOM Level0和DOM Level2事件模型

事件处理是JavaScropt中近几年变化最大的部分,也是现有浏览器中仍然存在差异的主要方面之一。为了开发出能够跨浏览器兼容的事件处理程序,我们在编写程序时需要注意一些细节。 【DOM Level0】...

【Android】Web Console: Uncaught TypeError: Object [object Object] has no method 'xxx'

From : GL(arui319) http://blog.csdn.net/arui319 APP开发中会经常内嵌webView,有一部分功能,需要在WebView中打开we...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)