在使用JS控制本的时候,用gradle打包调用JS的时候出现了下面的错误
"Uncaught TypeError: undefined is not a function", source: .....(935)
但是很奇怪的是用eclipse自带打包工具和ant都不会出现这问题
结果:
于是搜索,从网上得到以下一句话
经过查官方文档所知,因为这个接口允许JavaScript 控制宿主应用程序,这是个很强大的特性,但同时,在4.2的版本前存在重大安全隐患,因为JavaScript 可以使用反射访问注入webview的java对象的public fields,在一个包含不信任内容的WebView中使用这个方法,会允许攻击者去篡改宿主应用程序,使用宿主应用程序的权限执行java代码。因此4.2以后,任何为JS暴露的接口,都需要加@JavascriptInterface
但是我测试发现即便加了@JavascriptInterface这个注解 也不行
但是我将gradle文件的compileSdkVersion和targetSdkVersion从21变位16或者以下就OK了 因为16是android4.1 这样就没有4.2那个安全限制了 17也不行
mark下
这应该是跟安全机制有关,但是编译后运行在5.0上没问题