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

【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使用自定义的javascript进行回调

先说为什么需要讨论这个问题。   现在很多的手机应用,都可能会直接嵌入一个web页面。这样做的好处:一个是功能更新方便,维护起来容易,只需要维护服务器的页面即可,不需要更新客户端;另一个是功能通用...

Android WebView Error – Uncaught TypeError: Cannot call method...

Android WebView Error – Uncaught TypeError: Cannot call method ‘getItem’ of null at … http://waza...

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

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

(启动H5本地存储)WebView显示网页出现Uncaught TypeError: Cannot call method 'getItem' of null异常

WebView显示网页出现Uncaught TypeError: Cannot call method 'getItem' of null异常 09-21 16:17:49.161: I/chro...

webView console Uncaught TypeError

android 4.2系统上,混淆后,webView 不能正常调用JS LOG提示: Web Console(28886):Uncaught TypeError: Object [object O...

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

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

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

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

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

RandomizedSearchCV和GridSearchCV,在调用fit方法的时候产生'list' object has no attribute 'values'错误之处理方法【pyhon 版本...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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