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】Web Console: Uncaught TypeError: Object [object Object] has no method 'xxx'

From : GL(arui319) http://blog.csdn.net/arui319 APP开发中会经常内嵌webView,有一部分功能,需要在WebView中打开we...

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....

Uncaught TypeError: Object [object Object] has no method 'xxx'

android 开发,java与webview的网页用js进行交互时

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

我们开发的产品,有一部分功能,需要在WebView中打开web页面,然后在web页面中通过js方法回调部分native的功能。对于web回调native的开发方式,如果不了解的话,可以参考我以前的一篇...
  • arui319
  • arui319
  • 2014年01月20日 16:12
  • 18406

Android JS桥交互("Uncaught ReferenceError: xxx is not defined or xxx has no method")

网上android和js交互的代码有不少,也很容易搜到。最近在做的项目需要用到js桥,遇到了一些问题,记录下来,希望以后遇到能马上解决掉。一开始我找的demo是从这个:http://blog.csdn...

android4.4 webview调用javascript出现Uncaught ReferenceError: is not define或者has no method

这几天用Nexcu5 4.4.4系统做一个简单的手机设备号获取,然后调用javascript显示在网页里的功能,以前做过n多类似的程序,结果程序一运行啥问题都出来了,呵呵 [INFO:CONSOLE(...

RandomizedSearchCV和GridSearchCV,在调用fit方法的时候产生'list' object has no attribute 'values'错误之处理方法

RandomizedSearchCV和GridSearchCV,在调用fit方法的时候产生'list' object has no attribute 'values'错误之处理方法【pyhon 版本...

TensorFlow1.0 运行报错 AttributeError: type object 'NewBase' has no attribute 'is_abstract'

安装TF后,import tensorflow报错: I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA ...

AttributeError: 'module' object has no attribute 'face' 问题解决 opencv+python

AttributeError: 'module' object has no attribute 'face' 问题解决 opencv+python
  • wyx100
  • wyx100
  • 2017年06月10日 21:35
  • 1652

service_identity 模块 AttributeError: 'module' object has no attribute 'Any'

安装scrapy之后,开始第一步创建scrapy的工程,之后提示一个userwarning:提示我service_identity没有安装,我通过pip install service_identit...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android中java和JS互相调用,Web Console: Uncaught TypeError: Object [object Object] has no method
举报原因:
原因补充:

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